如何解决 Visual Studio 中的 C2733 链接错误

How can I resolve C2733 Linking Error in Visual Studio

提问人:Steve D. 提问时间:9/23/2022 最后编辑:Zoe is on strikeSteve D. 更新时间:9/27/2022 访问量:286

问:

我一直在尝试在 MS Visual Studio 17 2022 中编译自适应通信环境 (ACE) 项目,但遇到了大量相关的链接错误。

下面是一个示例:

1>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.33.31629\include\cstdlib(23,41): error C2733: 'abs': you cannot overload a function with 'extern "C"' linkage
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_math.h(464,38): message : see declaration of 'abs'

此问题显然不是源自 ACE 代码,而是源自与生成工具捆绑在一起的代码。

我的猜测是 MSVC 14.33.31629 和 Windows Kit 10 之间存在冲突。

有人对修复有任何建议吗?是否有编译器或预处理器标志可用于缓解此问题?我应该使用不同版本的 MS Build Tool 还是 Windows Kit?

C++ visual-studio linker-errors extern ace

评论

0赞 Richard Critten 9/23/2022
“......这个问题显然不是源自 ACE 代码......“ 请创建一个新项目并制作一个最小的可重现示例
0赞 Steve D. 9/23/2022
我尝试编译的项目是从 download.dre.vanderbilt.edu 下载的(ACE.zip:仅限 ACE(zip 格式))
0赞 Steve D. 9/23/2022
项目 (ACE_vs2019.vcxproj) 最终解压缩到 C:\ACE_wrappers\ace
0赞 Richard Critten 9/23/2022
“......我的猜测是 MSVC 14.33.31629 和 Windows Kit 10 之间存在冲突......”最小的可重复的例子是调查这种怀疑。如果正确,则无需让 ACE 调查此问题。
0赞 Minxin Yu - MSFT 9/26/2022
这回答了你的问题吗?错误 C2733 不允许重载函数“function”的第二个 C 联动

答:

1赞 Steve D. 9/27/2022 #1

我通过将我的 Windows SDK 升级到版本 10.0.20348.0 解决了这个问题。