32位与64位库装饰

时间:2015-08-24 16:45:48

标签: c++ visual-studio-2010 static-libraries

我在VS2010中使用以下函数创建了一个简单的dll:

extern "C"
{
  __declspec(dllexport) int myFunc()
  {
    return 1;
  }
}

我比较了x64和Win32平台生成的dll和lib文件,我找到了一个我不明白的结果。

使用Dependency Walker我看到两个dll都会显示未修饰的" myFunc"。 在Notepad ++中打开两个lib文件时,Win32 lib显示" _myFunc"当x64只显示" myFunc"。

有人可以解释一下为什么lib签名不同吗?是否可以删除32位lib文件中的下划线?

1 个答案:

答案 0 :(得分:-1)

签名是什么,你不能(或不应该)用编辑器改变它

libs是不同的,因为一个是32位,另一个是64

请注意,一个dll会生成.lib,但它仅供您在编译时使用,重要的部分是dll本身,您可以删除.lib并执行.exe而不会出现问题