winapi – VS 2012命名修改仍然适用于dll导出
发布时间:2021-01-28 18:36:24 所属栏目:系统 来源:网络整理
导读:为什么名称修改仍然应用于func3()的签名. 我错过了什么?我已经回顾了这些先前提出的问题 1,2 没有引用DEF文件. // dllmain.cpp#include "stdafx.h"extern "C" __declspec( dllexport ) double __cdecl func1(int id,double t){ return(1.01);};extern "C" _
为什么名称修改仍然应用于func3()的签名.
// dllmain.cpp #include "stdafx.h" extern "C" __declspec( dllexport ) double __cdecl func1(int id,double t) { return(1.01); }; extern "C" __declspec( dllexport ) int __cdecl func2(int id) { return(2); }; extern "C" __declspec( dllexport ) int __cdecl func3(char* file) { return(1); }; ...... 这是dumpbin / EXPORTS的输出: 00000000 characteristics 51B78F5E time date stamp Tue Jun 11 13:58:06 2013 0.00 version 1 ordinal base 3 number of functions 3 number of names ordinal hint RVA name 1 0 00003870 func1 = func1 2 1 00003880 func2 = func2 3 2 00001A00 func3 = ?do_encoding@codecvt_base@std@@MEBAHXZ (protected: virtual int __cdecl std::codecvt_base::do_encoding(void)const ) 解决方法导出不会被破坏,您可以清楚地看到dumpbin.exe输出中未编码的名称.你也看到了错位的名字.那个dumpbin.exe有点太有用了,也许,它还会读取.pdb文件来查找函数的实际名称.它显示在=的右侧只需删除.pdb文件并再次运行dumpbin.exe即可查看差异. 你没有问题,它有效. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |