bar*_*onm 3 dll winapi dllexport
为什么名称重整仍然适用于func3()签名.我错过了什么?我查看了这些以前提出的问题1,2个
NO DEF文件被引用.
// 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);
};
......
Run Code Online (Sandbox Code Playgroud)
这里的输出来自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 )
Run Code Online (Sandbox Code Playgroud)
导出不会被破坏,您可以清楚地看到dumpbin.exe输出中未编码的名称.你也看到了错位的名字.那个dumpbin.exe有点太有用了,也许,它还会读取.pdb文件来查找函数的实际名称.它显示在=的右侧
只需删除.pdb文件并再次运行dumpbin.exe即可查看差异.
你没有问题,它有效.