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 库崩溃的主要内容,如果未能解决你的问题,请参考以下文章