我正在尝试设置Centura和COM .dll之间的通信。 (从http://download.resip.fr下载以进行数据库导入)
Centura需要.tlb文件才能与此组件进行通信。通常我会使用regasm /tlb
生成.tlb,但看到它是COM .dll这是不可能的。
我发现我可以使用tlbexp for .NET dll:http://msdn.microsoft.com/en-us/library/hfzzah2c(v=vs.80).aspx
我试过这个,知道它可能会失败(因为我有COM .dll)。我收到了这个错误:
TlbExp:错误TX0000:无法加载文件或程序集'file:/// C:\ Windows \ system32 \ ResipBcb.dll'或其依赖项之一。该模块应该包含一个程序集清单。
使用Dependency Walker我注意到两个.dll缺失了。我在网上找到了ieshims.dll,但我找不到wer.dll。见this question。
我不知道tlbexp失败是否与这个丢失的文件有关?
总结一下,我的问题是: 如何从这个.dll获得.tlb?我似乎找不到任何方法从这个COM .dll中提取.tlb。
最好的问候 Clint Cambier
答案 0 :(得分:9)
您尝试做的只适用于.NET程序集,而不适用于本机COM服务器。它们的类型库几乎总是嵌入在DLL中。在Visual Studio中,使用File + Open + File并选择DLL。打开“TYPELIB”节点,右键单击资源(通常为1),导出。将它保存到项目目录中,使用.tlb文件扩展名。
答案 1 :(得分:2)
TblExp和regasm仅在.NET程序集上有效,你拥有的很可能是标准的非.NET COM DLL。因此,这两个命令都不适用于此DLL。
使用regsvr32
注册标准COM对象。尝试针对您的DLL运行它,看看它是否正确注册。如果是这样,你应该看到它列在Centura的ActiveX资源管理器中。