如果在C++ Dll中有几个导出类,但我没有Dll共享头文件。所以我不知道这些导出类的定义,我唯一知道的就是类名。有没有办法找到这些导出类并使用它们?在VC++中,有没有什么办法可以知道没有任何头文件的dll的导出类?
现在我只能使用GetProcAddress API来查找导出函数,是否有类似的API来查找导出类?
我使用VC++ 2008编译器。
如果在C++ Dll中有几个导出类,但我没有Dll共享头文件。所以我不知道这些导出类的定义,我唯一知道的就是类名。有没有办法找到这些导出类并使用它们?在VC++中,有没有什么办法可以知道没有任何头文件的dll的导出类?
现在我只能使用GetProcAddress API来查找导出函数,是否有类似的API来查找导出类?
我使用VC++ 2008编译器。
你可以得到最接近的是通过逆向工程(使用调试器)之前找到所需的内存大小调用一个构造函数,也许你可以找出哪些成员用于(以及继承和其他好处),但除了导出的函数外,绝对不会有正确的名称。它可能有用,但这是一项艰巨的任务。
有两种方法可以从DLL中导出函数。 1)显式链接对DLL 2)隐式连接到DLL
1)如果你要使用的是通过使用第一种方法 创建DLL,您将需要
2)如果你想使用的是通过使用第二种方法创建DLL你需要
在第二种情况下,你需要 - 自己 加载DLL - 计算功能解决自己 - > GetProcAddress的() - 卸载DLL自己
如果您有DLL,并且不知道它正在导出哪些类或函数 - 使用Dumpsbin和/ Exports选项可以知道所有导出的函数。
请让我知道我是否澄清你的
Dll中是否有导出类的符号?我可以使用一些API来通过符号获取导出类地址吗? – ZeroLiShu
可能不是,并且绝对不是标准的必需功能。可以将这些数据包含在dll资源中,但这将是一个非常尴尬的共享定义方法。不要指望这样的东西可用。 – Amit