Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在Segger Embedded Studio中包含文件_C_Include - Fatal编程技术网

C 在Segger Embedded Studio中包含文件

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(“你好”);

我刚刚开始与塞格嵌入式工作室。现在正在尝试调用包含的头文件的函数。该文件似乎被包括在内,因为它显示在依赖项中。现在,我只是将头文件和C文件包含在项目目录中

包含的头文件和C文件仅为:

//##### 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的特例中,正如我现在所知,有两种方法可以引用外部文件

  • 将文件添加到“源文件”文件夹很简单,但必须针对要使用相应文件的每个项目分别进行
  • 对于经常使用的文件,创建专用的库解决方案是有益的。这样的库可以通过选择“添加现有项目”导入到任何解决方案中。这会将库中的所有文件添加到当前解决方案中(并在项目树中显示)。现在单击选项卡project->dependencies。你的图书馆应该在这里。通过激活复选框,链接器将在构建解决方案时编译引用的项目,从而允许使用库函数
  • //###### C-File #########
    #include <test.h>
    #include <stdio.h>
    #include <stdlib.h>
    
     void printText(void)
     {
         printf("Hello");
     }