单元测试项目中的“未定义引用”

问题描述

我在 Visual Studio 2015 中使用 TinyEmbeddedTest 和 VisualGDB,并尝试创建一个单元测试项目作为我的解决方案的一部分。我的主项目构建并运行良好,但单元测试项目出现链接错误并且无法构建。

测试位于源文件 ADCTests.cpp 中,该文件具有

#include “ADC.c”

我认为适合 TinyEmbeddedTest。

文件 ADC.c 包含以下包含行:

#include “ADC.h”
#include “fault.h”

错误在 ADC.c 中抛出,如下语句:

if (status == SUCCESS)
{
Fault_Clear(FAULT_ADC_FAILURE);
rawADCValue = HAL_ADC_GetValue(hADC);
}
else
{
Fault_Set(FAULT_ADC_FAILURE);
rawADCValue = 0u;
}

错误是:

对“Fault_Clear”的未定义引用

对“Fault_Set”的未定义引用

由此我可以看到,声明这些函数的头文件fault.h可以被工具链访问,否则会出现编译错误,但源文件。定义这些函数的 fault.c 似乎无法访问。这两个文件都在同一个项目中。

我在运行主项目时没有遇到这些错误,只有在单元测试项目中。

我认为答案可能在于项目链接器设置,因此我在链接器->[附加输入]中添加了一行,如下所示:

C:\Development\myProject\VisualGDB\Debug\Src

我认为这会让链接器访问由编译器创建的 .o 文件。不幸的是,这产生了一个新问题。构建现在失败,没有任何错误消息。构建消息列表简单地说

构建失败:arm-none-eabi-g++.exe 退出代码 1 Id 返回 1 退出状态

当我查看日志时,它说

c:/sysgcc/arm-eabi/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin /ld.exe: 找不到 C:/Development/myProject/VisualGDB/Debug/Src: 权限 拒绝

有趣的是,最后一个路径是一个链接,当我点击它时,我得到一个错误对话框

无法打开 'C:\SysGCC\arm-eabi\Development\myProject\VisualGDB\Debug\Src'

这个特别奇怪,因为我知道那个路径不存在,而且那绝对不是我在链接器设置中输入的路径。

任何指导将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)