gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:38:11 25 4
gpt4 key购买 nike

我在使用 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++ 文件。

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

谢谢

最佳答案

标识符在 64 位代码中不会被修饰。 x64 没有大量的调用约定,这完全没有必要。使用链接器的映射文件验证这一点,应该是简单的 somesymbol没有前导下划线。所以你肯定需要相应地修改.def文件,我们从这里看不到它。请支持__declspec(dllexport)属性。 – 汉斯·帕桑特

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

关于c++ - 在 x64 环境中编译代码时出现 LNK2001 错误。但是代码在x86环境下编译得很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47593201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com