c - 假函数框架“发现一个或多个多重定义的符号”
问题描述
我正在使用 Fake Function Framework 来伪造 .c 文件中的函数并在我的 .cpp 单元测试文件中对其进行测试。
#include "..\fff.h"
extern "C"
{
#include "ioDigitalInput.h"
}
DEFINE_FFF_GLOBALS;
FAKE_VALUE_FUNC(bool, ioFunc);
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTestfff
{
TEST_CLASS(UnitTestfff)
{
public:
TEST_METHOD(TestMethod1)
{
}
};
}
函数 ioFunc 返回一个布尔值并将 void 作为输入。
当我尝试构建代码时,出现以下错误:“找到一个或多个多重定义的符号”和“ioFunc 已在 ioDigitalInput.obj 中定义”
我究竟做错了什么?
解决方案
线
FAKE_VALUE_FUNC(bool, ioFunc);
在您的.cpp 单元测试文件中定义(假)函数ioFunc
。对象文件ioDigitalInput.obj还包含(可能不是假的)定义ioFunc
,并且您尝试将此对象与编译的测试链接,因此ioFunc
是多重定义的。要么不要尝试链接ioDigitalInput.obj ,要么按照fff README中的描述使用弱属性标记假货。
推荐阅读
- okhttp - 如何在 okhttp 或 java 11 httpclient 等 http2 客户端中获取 Max_concurrent_streams 和流 id 的数量
- laravel - 无法获得类似条件 Laravel 6.5.2 的完整查询
- css - 在角度材料的垂直选项卡列表中添加选项卡按钮
- sql-server - 如何在 sql server 2017 的 django 查询集中支持 STRING_AGG
- wordpress - 过滤类别和 Postformat
- algorithm - 在数组末尾添加新数据点不是一个坏主意吗?
- android - 因 JVM 堆空间耗尽而导致守护进程到期?
- java - 如何从列表中保存许多类似的信息?(编码问题)
- typescript - 单击带有表格单元格的跨度不起作用-量角器/打字稿
- python - “进口烧瓶”正在工作,但“从烧瓶进口烧瓶”不是?