我正在为一个项目生成一个用于离线测试的虚拟DLL。我们有真正的DLL和它的头文件,虽然它们看起来不兼容。在DLL的名称是未重整但功能的前置声明声明被召唤出来为__stdcall
:是否有可能在__stdcall中有一个导出的函数,并且名称是否已解除?
example.h文件
DWORD __stdcall DoSomething(byte aByte);
example.dll中的Dependency Walker:
2 (0x0002) 2 (0x0002) DoSomething 0x000831C0
至于我读过,如果有可能在__stdcall
公约中输出一个函数,它的名字应该在依赖关系者中读作:
2 (0x0002) 2 (0x0002) [email protected] 0x000831C0
这是否意味着我们的头文件与编译的DLL不对应,还是我错过了某些东西?
最终,我如何形成虚拟函数的导出,以便像我正在模拟的实际DLL那样执行相同的操作?
感谢@Hans,事实证明,我们使用,可能在各方面都等于你选择1的方法,即是通过使用#pragma来重命名导出'#pragma comment(linker,“/ export:DoSomething = _DoSomething @ 4”)''。感谢标准字节计数乘法器的提示(32位的4位,64位的8位),它看起来像是一种趋势,我所看到的所有数字都是4的倍数,只是巧合。 –
还要注意,它并不是我的首选,我们只是试图复制专有DLL的功能。 –
嗯,我想我不得不编辑我的答案改为*三*。我会跳过,这不是记录的/ EXPORT功能。 –