我在VS2010创建了一个简单的dll用下面的函数:32位和64位库装饰
extern "C"
{
__declspec(dllexport) int myFunc()
{
return 1;
}
}
我比较了生成的DLL和lib文件既x64和Win32平台,我发现的结果我不明白。
使用Dependency Walker我看到两个dll都会显示未装饰的“myFunc”。 虽然在Notepad ++中同时打开两个lib文件,但当x64仅显示“myFunc”时,Win32 lib显示“_myFunc”。
有人可以解释为什么lib签名不同吗?是否可以删除32位lib文件中的下划线?
http://stackoverflow.com/a/15664100/17034 –
那么我完全是新名字装饰,所以你的链接是有趣的汉斯。我做了一些进一步的研究,并在此页面上找到(https://en.wikipedia.org/wiki/Name_mangling),“Windows上的64位惯例(Microsoft C)没有引领下划线”。 –