微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决单元测试项目中的“未定义引用”

我在 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 举报,一经查实,本站将立刻删除。