gpt4 book ai didi

c - Unresolved external symbol 错误。 dumpbin 显示附加到符号的额外 @number

转载 作者:行者123 更新时间:2023-11-30 14:28:44 24 4
gpt4 key购买 nike

我对C的了解非常有限。我正在尝试升级我的项目中使用的库。我用更新的文件替换了旧的静态库和头文件。当我尝试构建项目时,收到“无法解析的外部符号”错误。

我使用dumpbin检查了旧的和新的lib文件,发现新库中的符号有一个额外的@number(其中number是8、16、24、28、32、40、48、52之一, 72 或 80) 附加。有人可以告诉我如何继续吗?

更新

错误以某种方式停止了。但现在我收到错误

LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in MSVCRT.lib(MSVCR90.dll)

tried adding /NODEFAULTLIB:LIBCMT.lib 到库的编译器选项。但我仍然遇到同样的错误。

最佳答案

附加有@符号和数字的符号是使用stdcall calling convention的函数。 。看起来您正在使用 stdcall 作为默认值而不是 cdecl 来编译新库。

查看头文件中的函数声明。您很可能会看到一些指示此备用调用约定的内容。如果您不这样做并且您确定您拥有的静态库与头文件匹配,您可以更新 function declarations在头文件中包含 stdcall 调用约定。然后,在编译使用静态库的程序时,程序中的符号将正确查找 stdcall 样式函数符号。

解决更新

这可能与您链接静态库的内容以及链接最终二进制文件的内容发生冲突。您的静态库和最终程序二进制文件都必须链接到相同的 C 运行时。

关于c - Unresolved external symbol 错误。 dumpbin 显示附加到符号的额外 @number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605838/

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