查看C ++ DLL的成员

时间:2012-12-11 14:46:03

标签: c++ reflection legacy-code

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

如果我只有DLL,这可能吗?或者你必须知道DLL中的内容才能使用它。如果有可能我该怎么做呢?

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

3 个答案:

答案 0 :(得分:4)

获取此:http://www.dependencywalker.com/,使用depends.exe打开DLL,然后在“视图”菜单中激活“Undecorate C ++ Functions”。我主要使用它来查找依赖项,但它也暴露了DLL的入口点。

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

无论如何,你需要一份依赖性walker的副本。 :)

答案 1 :(得分:3)

您可以使用像IDA这样的工具来分解二进制文件并尝试制作函数名称,但这可能很难。为什么你只有DLL?从关联的lib的导出表中获取信息会更容易,或者甚至更好的是头文件。

答案 2 :(得分:0)

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

dumpbin /exports <nameofdll>