使用boost :: filesystem添加标头后,不再找到google test的单元测试

时间:2016-10-14 11:58:39

标签: c++ unit-testing boost cmake googletest

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

Process finished with exit code -1073741515 (0xC0000135) 
Empty test suite.

就像我有这段代码一样:

#include <gtest/gtest.h>
TEST(Test, Test1){
    ASSERT_FALSE(true);
}

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

#include <gtest/gtest.h>
#include <boost/filesystem.hpp>
TEST(Test, Test1){
    ASSERT_FALSE(true);
} 
之后没有发现任何事情。我使用基于cmake/clion/cygwin的环境。将为您的想法如何解决这些问题。

1 个答案:

答案 0 :(得分:4)

错误代码表示

//
// 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

(见What does error code 0xc0000135 mean when starting a .NET application?

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

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

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