使用boost :: filesystem添加标头后,再也找不到来自Google测试的单元测试

sil*_*der 6 c++ boost unit-testing cmake googletest

我有一个使用Google测试框架的单元测试项目,我的测试工作正常。但是现在我添加了boost::filesystemheader之类的东西#include <boost/filesytem.hpp>,之后我的项目链接和编译就很好了,但是根本没有找到测试,当我运行测试时,它给了我-

Process finished with exit code -1073741515 (0xC0000135) 
Empty test suite.
Run Code Online (Sandbox Code Playgroud)

就像我有这段代码一样:

#include <gtest/gtest.h>
TEST(Test, Test1){
    ASSERT_FALSE(true);
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,并找到失败的测试用例,但是如果我添加boost header像这样:

#include <gtest/gtest.h>
#include <boost/filesystem.hpp>
TEST(Test, Test1){
    ASSERT_FALSE(true);
} 
Run Code Online (Sandbox Code Playgroud)

之后,什么也没找到。我使用cmake/clion/cygwin基于环境。将适用于您的想法如何解决这些问题。

seh*_*ehe 5

错误代码指示

//
// MessageId: STATUS_DLL_NOT_FOUND
//
// MessageText:
//
// The program can't start because %hs is missing from your computer. 
// Try reinstalling the program to fix this problem.
//
#define STATUS_DLL_NOT_FOUND             ((NTSTATUS)0xC0000135L)    // winnt
Run Code Online (Sandbox Code Playgroud)

(请参阅启动.NET应用程序时错误代码0xc0000135是什么意思?

我的猜测是您使用了带有动态库的Google测试来包含测试。自从添加了Boost Filesystem之后,它现在将与Boost System和Boost Filesystem DLL链接。

但是,测试运行程序无法加载这些依赖项(导致显示错误)。可以在整个系统范围内安装boost DLL,将它们复制到测试运行器目标的输出目录(或启动testrunner的任何位置),或者使用清单文件指示DLL的位置。

更新正如评论者所添加的,当然不链接到DLL也会使问题消失。