【发布时间】:2015-05-25 06:32:38
【问题描述】:
如果 C++ Dll 中有几个导出类,但我没有 Dll 共享头文件。所以我不知道这些导出类的定义,我唯一知道的就是类名。有没有办法找到这些导出类并使用它们?
现在我只能使用GetProcAddress API 来查找导出函数,有没有类似的API 来查找导出类?
我使用 VC++ 2008 编译器。
【问题讨论】:
标签: c++ visual-c++ dll export
如果 C++ Dll 中有几个导出类,但我没有 Dll 共享头文件。所以我不知道这些导出类的定义,我唯一知道的就是类名。有没有办法找到这些导出类并使用它们?
现在我只能使用GetProcAddress API 来查找导出函数,有没有类似的API 来查找导出类?
我使用 VC++ 2008 编译器。
【问题讨论】:
标签: c++ visual-c++ dll export
你能得到的最接近的方法是通过逆向工程(使用调试器)在调用构造函数之前找到所需的内存大小,也许你可以弄清楚成员的用途(以及继承和其他好处),但是除了导出的函数之外,您肯定不会有任何正确的名称。它可能会奏效,但这是一项艰巨的任务。
【讨论】:
【讨论】:
有两种方法可以从 DLL 中导出函数。 1) 显式链接到 DLL 2) 隐式链接到 DLL
1) 如果您想使用通过第一种方法创建的 DLL 你需要
2) 如果您想使用通过第二种方法创建的 DLL 你需要
在第二种情况下,您需要 - 自己加载DLL - 自己计算函数地址 -> GetProcAddress() - 自己卸载 DLL
如果您有 DLL,但不知道它正在导出哪些类或函数 - 使用带有 /Exports 选项的 Dumpbin 来了解所有导出的函数。
请让我知道我是否澄清了你的问题
【讨论】: