5

我有一个 1998 年编写的 C++ DLL,我想查看成员(属性、字段、方法、构造函数等)。我的理解是,编写 DLL 的公司已不再存在,但仍在使用。

如果我只有 DLL,这可能吗?或者您是否只需要知道 DLL 中的内容才能使用它。如果可能的话,我会怎么做?

我希望通过 P/Invoke 使用来自 .Net 的 DLL。

4

4 回答 4

5

得到这个: http: //www.dependencywalker.com/,使用depends.exe打开DLL,然后在“查看”菜单中激活“取消装饰C++函数”。我主要使用它来查找依赖项,但它也公开了 DLL 的入口点。

这不是万无一失的,因为公开类的 DLL 不必导出其方法。例如,纯虚方法布局足够统一,您可以将实例公开为接口指针,并可能带有工厂函数。但它可能会解决你的问题。

无论如何,您需要一份依赖步行者的副本。:)

于 2012-12-11T14:53:48.080 回答
3

您可以使用IDA之类的工具来反汇编二进制文件并尝试找出函数名称,但这可能很难。为什么你只有DLL?从关联库的导出表中获取信息会容易得多,或者更好的是,从头文件中获取信息。

于 2012-12-11T14:50:07.953 回答
0

您可以使用 VS 命令提示符,一个简单的命令是:

dumpbin /exports <nameofdll>
于 2017-06-29T06:07:21.567 回答
0

NirSoft 提供“DLL 导出查看器”

https://www.nirsoft.net/utils/dllexp.zip

方便的 UI 应用程序,可以显示 dll 成员。

于 2021-09-24T10:55:04.933 回答