我有一个COM应用程序,我想使用,但我只有该应用程序的.exe。有没有办法从该.exe中提取.tlb?
我尝试在Visual Studio命令提示符下使用tlbexp filename.exe
,但我得到一个错误,我不知道为什么:TlbExp : error TX0000 : Exception of type 'System.OutOfMemoryException' was thrown.
我正在使用Visual Studio 2012和C++。
编辑:
.exe是C的,后来我看到tlbexp是. NET的。这就是为什么它不起作用。但我仍然需要找到一种方法从C. exe中提取.tlb。
3条答案
按热度按时间8zzbczxx1#
同样的事情也可以用标准的文件资源管理API、
LoadResource
和friends,然后是WriteFile
编程完成。(from由Roman R.于2016年1月14日13:39留下的评论)
ru9i0ody2#
我已经使用了这个实用程序“ResourcesExtract“只要检查类型库选项:
的数据
它现在在所有情况下都可以工作,但它适用于许多dll和exe
r8xiu3jd3#
只有假设EXE/DLL实际上有一个带有类型库的资源,才有可能提取类型库。这不是一个给定的,即使是对于COM服务器。
假设文件中确实存在类型库,则Visual Studio本身可以用于从EXE或DLL(或OCX)中提取类型库作为TLB文件。
下面是一个使用Visual Studio 2022为Microsoft Common Controls执行此操作的示例。
首先,运行Visual Studio。然后使用打开方式打开EXE或DLL:
x1c 0d1x的数据
确保资源编辑器是选定的工具,然后单击确定:
的
打开后,右键单击
TYPELIB
节点下的资源,然后将其 * 导出 * 为文件:的
TLB
。* 您可以使用例如OLEView打开它。(This回答灵感来自于Roman R. 2016年1月14日13:34留下的问题的评论)