当我尝试构建测试源时,会收到类似以下的错误。



执行者的内容。

#include <CppUTest/TestHarness.h>
#include <CppUTest/CommandLineTestRunner.h>
#include <CppUTest/UtestMacros.h>
#include <CppUTestExt/MockSupport.h>

int main(int argc, char** argv) {
  MemoryLeakWarningPlugin::turnOffNewDeleteOverloads();
  return CommandLineTestRunner::RunAllTests(argc, argv);
}

我测试的源代码从以下内容开始。
#include <CppUTest/TestHarness.h>
#include <CppUTest/CommandLineTestRunner.h>
#include <CppUTest/UtestMacros.h>
#include <CppUTestExt/MockSupport.h>
#include <iostream>
#include "common/data_util_astro_cfg.h"

TEST_GROUP(ASTRO_UTIL_TEST) {
  void setup() { }
  void teardown() { }
};

并且“common/data_util_astro_cfg.h”文件具有以下内容。
#include "../data/data_type_file.h"
#include <json/json.h>

static AstroConfigs toAstroConfigs(std::string content)

我的问题是我收到了这些包含的编译错误,当我删除行json.h时,包括一切都很好,我可以得到二进制输出。

我认为问题在于新运营商的冲突。该解决方案由Cpputest方面提供,位于http://cpputest.github.io/manual.html#memory_leak_detection上。但目前尚不清楚。 :(

这个问题已经在Compilation error after including <map>上定义了。它与我的是如此相似,但是通过创建新项目解决了问题。在这种情况下,我别无选择。我正在使用Yocto项目,该项目也已使用自动生成工具创建。

你能帮我吗? (感谢您的时间。)

最佳答案

不幸的是,一段时间后我解决了这个问题。 CPPUTest似乎有问题。在测试文件的顶部,我有几个包含项。其中一些属于CPPUTest库,其中一些属于我的。我的收录者关注的是CPPUTest,这就是为什么我遇到错误。如果我更改了他们的位置,它将可以正常工作。似乎没有意义,但这是正确的解决方案。 “应该在包含 list 的底部使用定义明确的提案库解决该问题。”

09-08 00:15