添加 header 和 boost::filesystem 后,不再找到来自 google 测试的单元测试
Unit test from google test no longer found after adding header with boost::filesystem
我有一个使用 google 测试框架的单元测试项目,我的测试工作正常。但是现在我添加了 boost::filesystem
header 就像 #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 header:
#include <gtest/gtest.h>
#include <boost/filesystem.hpp>
TEST(Test, Test1){
ASSERT_FALSE(true);
}
之后什么也没找到。我使用基于 cmake/clion/cygwin
的环境。我们将感谢您提供解决这些问题的想法。
错误代码表示
//
// 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,将它们复制到测试运行器目标的输出目录(或启动测试运行器的任何地方)或使用清单文件指示 DLL 位置。
更新 正如评论者补充的那样,当然不链接到 DLL 也会使问题消失。
我有一个使用 google 测试框架的单元测试项目,我的测试工作正常。但是现在我添加了 boost::filesystem
header 就像 #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 header:
#include <gtest/gtest.h>
#include <boost/filesystem.hpp>
TEST(Test, Test1){
ASSERT_FALSE(true);
}
之后什么也没找到。我使用基于 cmake/clion/cygwin
的环境。我们将感谢您提供解决这些问题的想法。
错误代码表示
// // 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,将它们复制到测试运行器目标的输出目录(或启动测试运行器的任何地方)或使用清单文件指示 DLL 位置。
更新 正如评论者补充的那样,当然不链接到 DLL 也会使问题消失。