我有一个1998年编写的C ++ DLL,我想查看成员(属性,字段,方法,构造函数等)。我理解编写DLL的公司不再关注,但它仍在使用。
如果我只有DLL,这可能吗?或者你必须知道DLL中的内容才能使用它。如果有可能我该怎么做呢?
我希望通过P / Invoke使用.Net的DLL。
答案 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>