在 COM dll 上使用 tlbexp.exe

发布于 2024-10-09 18:39:16 字数 1029 浏览 3 评论 0原文

我正在尝试在 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。

最好的问候
克林特·坎比尔

I am trying to set up communication between Centura and a COM .dll. (Downloaded from http://download.resip.fr for a database import)

Centura requires a .tlb file to be able to communicate to this component. Normally I would use regasm /tlb to generate the .tlb but seeing as it is a COM .dll this is not possible.

I found that I could use tlbexp for .NET dll's: http://msdn.microsoft.com/en-us/library/hfzzah2c(v=vs.80).aspx

I tried this out, knowing it would probably fail (as I have COM .dll). I received this error:

TlbExp : error TX0000 : Could not load file or assembly 'file:///C:\Windows\system32\ResipBcb.dll' or one of its dependencies. The module was expected to contain an assembly manifest.

Using Dependency Walker I noticed two .dll's missing. I found ieshims.dll online but I can't find the wer.dll. See this question.
I don't know if the tlbexp failure has anything to do with this file that is missing?

To sum up, my question is:
How do I get a .tlb from this .dll? I can't seem to find any way to extract the .tlb out of this COM .dll.

Best regards
Clint Cambier

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

套路撩心 2024-10-16 18:39:16

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

What you are trying to do only works for .NET assemblies, not native COM servers. The type library for them is almost always embedded inside the DLL. In Visual Studio, use File + Open + File and select the DLL. Open the "TYPELIB" node, right-click the resource (usually 1), Export. Save it to, say, a project directory, use the .tlb filename extension.

揽月 2024-10-16 18:39:16

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

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

TblExp and regasm are only valid on .NET assemblies, what you have is most likely a standard non .NET COM DLL. So neither of those two commands are valid on this DLL.

Standard COM objects are registered using regsvr32. Try running that against your DLL and see if it registers correctly. If it does you should see it listed in Centura's ActiveX explorer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文