我有一个 1998 年编写的 C++ DLL,我想查看成员(属性、字段、方法、构造函数等)。我的理解是,编写 DLL 的公司已不再存在,但仍在使用。
如果我只有 DLL,这可能吗?或者您是否只需要知道 DLL 中的内容才能使用它。如果可能的话,我会怎么做?
我希望通过 P/Invoke 使用来自 .Net 的 DLL。
我有一个 1998 年编写的 C++ DLL,我想查看成员(属性、字段、方法、构造函数等)。我的理解是,编写 DLL 的公司已不再存在,但仍在使用。
如果我只有 DLL,这可能吗?或者您是否只需要知道 DLL 中的内容才能使用它。如果可能的话,我会怎么做?
我希望通过 P/Invoke 使用来自 .Net 的 DLL。
得到这个: http: //www.dependencywalker.com/,使用depends.exe
打开DLL,然后在“查看”菜单中激活“取消装饰C++函数”。我主要使用它来查找依赖项,但它也公开了 DLL 的入口点。
这不是万无一失的,因为公开类的 DLL 不必导出其方法。例如,纯虚方法布局足够统一,您可以将实例公开为接口指针,并可能带有工厂函数。但它可能会解决你的问题。
无论如何,您需要一份依赖步行者的副本。:)
您可以使用IDA之类的工具来反汇编二进制文件并尝试找出函数名称,但这可能很难。为什么你只有DLL?从关联库的导出表中获取信息会容易得多,或者更好的是,从头文件中获取信息。
您可以使用 VS 命令提示符,一个简单的命令是:
dumpbin /exports <nameofdll>