我有一个使用谷歌测试框架的单元测试项目,我的测试工作正常。但是现在我添加了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
基于环境。如果您提出解决这些问题的想法,我们将不胜感激。
错误代码表示
//
// 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
(see 启动 .NET 应用程序时错误代码 0xc0000135 是什么意思? https://stackoverflow.com/questions/11432940/what-does-error-code-0xc0000135-mean-when-starting-a-net-application)
我的猜测是您使用 Google 测试和动态库来包含测试。由于您添加了 Boost Filesystem,它现在将与 Boost System 和 Boost Filesystem DLL 链接。
但是,测试运行程序无法加载这些依赖项(导致显示错误)。在系统范围内安装 boost DLL,将它们复制到测试运行程序目标的输出目录(或启动测试运行程序的任何位置),或者使用清单文件来指示 DLL 位置。
UPDATE正如评论者所补充的,当然,不链接到 DLL 也会使问题消失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)