在x64环境中编译代码时出现LNK2001错误。但是代码在x86环境中编译得很好

时间:2017-12-01 12:14:56

标签: c++ c linker dllexport lib

我在下面看到与x64环境集编译时的链接错误。

somefile.def : error LNK2001: unresolved external symbol _somesymbol
somepath\somefile.lib : fatal error LNK1120: 1 unresolved externals
gmake[2]: *** [somepath\somefile.dll] Error 1120

当我检查在x86中生成的somefile.def时,它也有上面相同的符号,不同之处在于它有双下划线(' __ somesymbol')。这背后的原因是什么? 该代码包含C& C ++文件。

任何人都可以帮助解决这个问题,最好是详细解释吗?

由于

1 个答案:

答案 0 :(得分:0)

标识符不会以64位代码修饰。完全没有必要,x64没有大量的调用约定。使用链接器的映射文件进行验证,该文件应为纯somesymbol,且不带下划线。因此,您当然需要相应地修改.def文件,我们从这里看不到它。偏爱__declspec(dllexport)属性。                     –汉斯·帕桑特

我调整了make代码,用“ __somesymbol”而不是“ _somesymbol”生成“ somefile.def”,并且可以成功地构建我的x64位库和dll文件。 – Samanyu