visual-studio - __CxxFrameHandler4 是什么,链接器错误 "unresolved external symbol __CxxFrameHandler4"究竟是什么意思?

标签 visual-studio visual-c++ vcpkg

我正在使用通过 vcpkg 构建的几个库(例如 civet-web 和 prometheus-cpp),用于我的 Visual C++ 项目。当构建 x86 一切都完美时,在 x64 中我收到一堆链接器错误:

error LNK2001: unresolved external symbol __CxxFrameHandler4


在线搜索对这个符号/错误的所有引用都是关于特定项目的,我找不到 __CxxFrameHandler4 是什么以及这个错误突出显示了什么问题。我不知道是 vcpkg 构建库的方式有问题,还是我的项目有问题,或者如何开始寻找解决方案。
我确实找到了这篇博客文章,但它引用了 VS2019 的预览,我找不到与之相关的任何设置:https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/
如果有人能解释这一切,那将是一个很大的帮助。

最佳答案

我在尝试通过 vcpkg 安装和使用 cpr 时遇到了同样的问题。我想在 VS2015 项目中使用 cpr 库。
原因 :我安装了VS2019。 vcpkg 使用最新版本的工具集 Visual Studio。
分辨率 :添加您自己的三元组或更改现有的方式,以使用您指定的工具集。添加在我的情况下不起作用,因此我更改了 vcpkg 中三元组文件夹中现有的“三元组”文件。我想让 vcpkg 使用 VS2015 附带的工具集(它是 V140)
x86-windows.cmake 文件内容

set(VCPKG_TARGET_ARCHITECTURE x86)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_PLATFORM_TOOLSET "v140")
set(VCPKG_DEP_INFO_OVERRIDE_VARS "v140")
x64-windows.cmake 文件的内容
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_PLATFORM_TOOLSET "v140")
set(VCPKG_DEP_INFO_OVERRIDE_VARS "v140")

关于visual-studio - __CxxFrameHandler4 是什么,链接器错误 "unresolved external symbol __CxxFrameHandler4"究竟是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65672356/

相关文章:

c# - Visual Studio XML 文档参数名称值颜色

java - 缺少 AccessBridgeDebug.h?

c - 如何在 Windows 中使用 MSVC 从命令行构建 DLL

c++ - 错误 LNK2001:未解析的外部符号 web::websockets::client::websocket_callback_client

visual-studio - 如何在 Visual Studio 中静态链接 VCPKG 生成的 .lib 文件

c++ - Visual Studio 2013 中的调试技巧 c++

.net - 如何在 VS 2005 中关闭无 xml 注释的警告

visual-studio - 在 Visual Studio 中替换 Delphi IDE "Sync Edit"

C++ 鼠标悬停事件

c++ - 将 vcpkg 与 Visual Studio 2022 一起使用会产生伪造的未解析外部符号链接(symbolic link)器错误