5

我正在尝试在Centura和 COM .dll 之间建立通信。(从http://download.resip.fr下载用于数据库导入)

Centura 需要一个 .tlb 文件才能与此组件通信。通常我会用它regasm /tlb来生成 .tlb,但因为它是一个 COM .dll,所以这是不可能的。

我发现我可以将 tlbexp 用于 .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。看到这个问题
不知道tlbexp失败是不是和这个文件丢失有关系?

总而言之,我的问题是:如何从这个 .dll 中获取 .tlb?我似乎找不到任何方法从这个 COM .dll 中提取 .tlb。

最好的问候
克林特坎比尔

4

2 回答 2

10

您尝试执行的操作仅适用于 .NET 程序集,不适用于本机 COM 服务器。它们的类型库几乎总是嵌入在 DLL 中。在 Visual Studio 中,使用 File + Open + File 并选择 DLL。打开“TYPELIB”节点,右键资源(一般为1),导出。将其保存到项目目录,使用 .tlb 文件扩展名。

于 2010-12-28T17:12:20.783 回答
2

TblExp 和 regasm 仅在 .NET 程序集上有效,您所拥有的很可能是标准的非 .NET COM DLL。因此,这两个命令在此 DLL 上均无效。

标准 COM 对象使用regsvr32. 尝试对您的 DLL 运行它,看看它是否正确注册。如果是这样,您应该会在 Centura 的 ActiveX 资源管理器中看到它。

于 2010-12-28T16:28:48.393 回答