C 在Segger Embedded Studio中包含文件
我刚刚开始与塞格嵌入式工作室。现在正在尝试调用包含的头文件的函数。该文件似乎被包括在内,因为它显示在依赖项中。现在,我只是将头文件和C文件包含在项目目录中 包含的头文件和C文件仅为:C 在Segger Embedded Studio中包含文件,c,include,C,Include,我刚刚开始与塞格嵌入式工作室。现在正在尝试调用包含的头文件的函数。该文件似乎被包括在内,因为它显示在依赖项中。现在,我只是将头文件和C文件包含在项目目录中 包含的头文件和C文件仅为: //##### Header-File ###### #ifndef TEST_H_ #define TEST_H_ void printText(void); #endif //TEST_H_ 以及: //C文件######### #包括 #包括 #包括 作废打印文本(作废) { printf(“你好”);
//##### Header-File ######
#ifndef TEST_H_
#define TEST_H_
void printText(void);
#endif //TEST_H_
以及:
//C文件#########
#包括
#包括
#包括
作废打印文本(作废)
{
printf(“你好”);
}
但是当我尝试调用main中的printText函数时,我得到了错误:
“未定义符号:打印文本”。
为什么无法识别该函数?“未定义符号
”是链接器错误。您没有链接包含printText()
定义的目标代码
这不是头文件的问题;包含头文件不会导致关联代码被链接——这只是声明,以便编译器知道接口的外观。它是将单独编译的目标代码组合成程序的链接器。您没有告诉链接器使用包含printText()
的目标代码,也没有告诉IDE项目编译它以生成该目标代码
项目树清楚地显示项目中只包含main.c;您还需要添加包含printText()
的C文件
在这里,您需要掌握的是“的”概念。谢谢Clifford的回答。你是对的,我对在构建项目时将链接哪些文件有一些误解。在segger embedded studio的特例中,正如我现在所知,有两种方法可以引用外部文件
//###### C-File #########
#include <test.h>
#include <stdio.h>
#include <stdlib.h>
void printText(void)
{
printf("Hello");
}