首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Segger Embedded Studio中包含文件

在Segger Embedded Studio中包含文件
EN

Stack Overflow用户
提问于 2021-05-22 20:09:14
回答 2查看 266关注 0票数 0

我刚刚开始使用Segger Embedded Studio。现在正在尝试调用包含的头文件的函数。该文件似乎包括在内,因为它显示在依赖项中。现在,我只是在项目目录中包含了头文件和C-File。

包含的头文件和C文件很简单:

代码语言:javascript
复制
//##### Header-File ######
#ifndef TEST_H_
#define TEST_H_
void printText(void);
#endif //TEST_H_

和:

代码语言:javascript
复制
//###### C-File #########
#include <test.h>
#include <stdio.h>
#include <stdlib.h>

 void printText(void)
 {
     printf("Hello");
 }

但是,当我尝试在main中调用printText函数时,我得到了错误:“未定义的符号: printText”。为什么函数不被识别?

EN

回答 2

Stack Overflow用户

发布于 2021-05-22 20:18:13

"Undefined symbol“是链接器错误。您没有链接包含printText()定义的目标代码。

这不是头文件的问题;包括头文件并不会链接相关的代码-这只是一个声明,因此编译器知道接口是什么样子的。它是将单独编译的目标代码组合在一起形成程序的链接器。您没有告诉链接器使用包含printText()的对象代码,也没有告诉您的集成开发环境项目编译它以生成该对象代码。

项目树清楚地显示您的项目中只包含main.c;您还需要添加包含printText()的C文件。

在这里,您需要掌握separate compilation and linking的概念。

票数 1
EN

Stack Overflow用户

发布于 2021-05-23 21:27:27

谢谢Clifford的回答。你是对的,我有一些错误的概念,在构建项目时,哪些文件将被链接。在segger嵌入式studio的特殊情况下,据我所知,有两种方法可以引用外部文件。

  1. 将文件添加到源文件文件夹很简单,但对于要使用相应文件的每个项目,必须单独完成。
  2. 对于常用文件,创建专用库解决方案是有益的。这样的库可以通过选择“添加现有项目”导入到任何解决方案中。这会将库中的所有文件添加到当前解决方案中(并在项目树中显示它们)。现在单击选项卡项目-> dependencies。你的库应该会出现在这里。通过激活该复选框,链接器将在生成解决方案时编译引用的项目,从而允许使用库函数。

Adding and linking library-project to a current solution

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67649288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档