gpt4 book ai didi

C++ Visual Studio 2012 问题

转载 作者:行者123 更新时间:2023-11-30 05:34:21 27 4
gpt4 key购买 nike

更新问题 #3

我已经缩小了问题范围。似乎只包括<thread>让编译器发疯。我什至没有进行任何线程调用,只是包含它。

我试过启用/EHsc 并禁用它。

禁用,我得到:

我收到这 6 条消息:

Error   1   error C2220: warning treated as error - no 'object' file generated (main.cpp)   C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 313 1   cefclient
Warning 2 warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc (main.cpp) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 313 1 cefclient
Error 3 error C2220: warning treated as error - no 'object' file generated (Program.cpp) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 313 1 cefclient
Warning 4 warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc (Program.cpp) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 313 1 cefclient
Error 5 error C3861: '__uncaught_exception': identifier not found (main.cpp) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 4774 1 cefclient
Error 6 error C3861: '__uncaught_exception': identifier not found (Program.cpp) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 4774 1 cefclient

如果启用(配置属性 -> C/C++ -> 代码生成 & 在命令行中)

Error   1   error C3861: '__uncaught_exception': identifier not found (main.cpp)    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 4774    1   cefclient

Error 2 error C3861: '__uncaught_exception': identifier not found (Program.cpp) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\concrt.h 4774 1 cefclient

我用一个新的空白项目做了一个简单的测试,包括线程和编译。一切顺利,没有错误。然而,在我的主要项目中,我使用的是 Chromium Embedded Framework v3,它似乎与线程包含有奇怪的交互?

简单地包含它会造成这样的困惑,这似乎很奇怪。

有什么想法吗?

更新:

通过完全删除 _HAS_EXCEPTIONS=0 标志并从 CMake 重建项目,我进入了项目甚至无法编译的状态。由于此更改,它会从各种文件中抛出大量警告和错误。

错误如:

Warning 230 warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc (C:\Users\mads\Desktop\cef_binary_3.2526.1347.gcf20046_windows32\cefclient\browser\client_handler_osr.cc)    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xlocale  337 1   cefclient

根据大量询问和谷歌搜索,解决方案是在项目属性 -> C/C++ -> 代码生成 -> 启用 C++ 异常 = Yes(/EHsc) 中指定/EHsc。以及在命令行输入字段中设置标志/EHsc。

然而,什么都没有改变。出现相同的错误,就好像什么都没有改变一样。

更新:

错误

Warning 2   warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc (C:\Users\mads\Desktop\cef_binary_3.2556.1368.g535c4fb_windows32\libcef_dll\transfer_util.cc)    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xlocale  337 1   libcef_dll_wrapper

来自项目“libcef_dll_wrapper”,尽管我已经在其项目设置中指定了/EHsc!在 C++ -> 代码生成页面和命令行中

解决方案编辑:

事实证明,每次我尝试构建或运行项目时,cmake 文件都会覆盖我的设置,因此呈现我所做的任何未使用的更改,尽管已设置!我能够通过直接编辑项目的 cmake 文件来解决问题。之前没用过cmake,所以最后成了学习经验。我现在已经用线程包含测试了我的项目,它按预期编译了!

感谢大家的宝贵建议

最佳答案

确保代码和编译器命令行都没有定义 _HAS_EXCEPTIONS=0。

Compiling VC++ 12.0 with _HAS_EXCEPTIONS=0 and including concrt.h causes a compiler error :

If a source file is compiled with VC++ 12.0 with _HAS_EXCEPTIONS set to 0 and the source includes, whether directly or indirectly, concrt.h, the compiler gives an error of:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\concrt.h(4774) : error C3861: '__uncaught_exception': identifier not found

[...] Macro _HAS_EXCEPTIONS=0 is undocumented and unsupported by Microsoft. It may work with some parts of the STL library for legacy reasons, but it won't be compatible with ConcRT library (concrt.h) since ConcRT depends on exceptions for cancellation.

关于C++ Visual Studio 2012 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273095/

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