GoogleTest 的 CLion 教程:将 STATIC 更改为 SHARED 库崩溃

Posted

技术标签:

【中文标题】GoogleTest 的 CLion 教程:将 STATIC 更改为 SHARED 库崩溃【英文标题】:CLion tutorial for GoogleTest: changing STATIC to SHARED library crashes 【发布时间】:2021-09-13 01:48:13 【问题描述】:

我按照https://www.jetbrains.com/help/clion/unit-testing-tutorial.html 此处的教程进行操作并按承诺完成所有工作(Windows 10 Pro、CLion 2021.1.2、Debug MinGW Lavavej + boost 工具链https://nuwen.net/mingw.html)

我在DateConverter_lib\CMakeLists.txt改了一个字

add_library(DateConverter_lib STATIC

add_library(DateConverter_lib SHARED

项目构建但不再运行,正在打印

Test framework quit unexpectedly 
Process finished with exit code -1073741515 (0xC0000135)

这显然是加载 DLL(共享库)失败。对我有什么建议吗?

【问题讨论】:

【参考方案1】:

您发现退出代码意味着您缺少共享库。(在 Windows 情况下,DLL 文件。)当库被共享时,这意味着它没有链接到您生成的二进制文件。所以每次运行都需要指定DLL的位置。

您需要确保Google_Tests_run 的配置(或您将使用的任何测试运行/调试配置)在环境变量中具有共享库路径。在您的情况下,它应该类似于:

PATH=$PATH\;C:\Users\BrianBeckman\CLionProjects\DateConverter\cmake-build-debug\DateConverter_lib

另一种选择是将 DLL 文件放在工作目录中。您可以通过在可执行文件所在的方向添加符号链接到构建目录中的 DLL 来实现。或者更改运行/调试配置中的工作目录,但这仅在您只有一个共享库位置时才有效。

顺便说一句,如果您使用的是类似 UNIX 的系统,如 Linux 或 MacOS,则不需要这样的配置,因为 cmake 会将共享库的位置写入 RPATH。不幸的是,Windows 没有 DLL 文件的 RPATH 概念。

测试愉快!

【讨论】:

以上是关于GoogleTest 的 CLion 教程:将 STATIC 更改为 SHARED 库崩溃的主要内容,如果未能解决你的问题,请参考以下文章

未指定 CLion 目标 - 无目标

OpenGL:Windows+Clion+MinGW+freeglut配置教程

JetBrains 系列之 CLion 激活教程

clion2021破解版下载安装激活教程

跨平台IDE集成开发环境CLion入门教程,新手必看!

Clion下载安装使用教程(Win+MinGW)