代码::块 20.03 + MinGW 错误? “在动态链接库中找不到入口点”,但目标是一个exe控制台应用程序

问题描述

我正在使用与 MINGW 和 doctest 捆绑在一起的 Code::Blocks IDE 作为单元测试框架创建一套小型单元测试项目。在 Code::Blocks v17.12 下,一切都按预期构建和运行,但调试器在 IDE 中不起作用。所以我尝试升级到 v20.03。现在调试器在 IDE 中工作,但我无法制作运行的 EXE。调试和发布版本的构建都是干净的。该项目被定义为 C++ 控制台应用程序。尝试从 Windows 命令控制台运行 Release exe 文件会产生错误消息:“无法在动态链接库 ...\SetGetBitTest.exe 中找到过程入口点 __cxa_thread_atexit。”

为什么 Code::Blocks 20.03 在 Windows 命令窗口认为是 DLL 的 exe 目标文件中构建了一些东西?这似乎是一个 Code::Blocks 错误一个复杂的因素可能是使用 doctest,它在 doctest.h 中嵌入了所有可执行代码,而 doctest.cpp 是一个空壳?测试的 main() 函数位于单元测试源文件中,如 doctest 所规定的。同样,这在 Code::Blocks v17.12 下工作正常。我搜索了其他报告,其中由 Code::Blocks 20.03 生成的 release build 10.03 exe 文件产生了此错误,并且只发现了构建目标是 DLL 的几种情况。

有没有其他人遇到过类似的问题,并且能够解决它?

解决方法

我在 Code::Blocks Compiler 设置中打开了选项 static libstdc++。它修复了无法找到入口点 __cxa_thread_atexit 时的执行错误。现在一切都很好。