string.h和stdlib.h函数给我错误:未定义引用'...'

时间:2018-05-04 12:33:28

标签: c include atoi string.h

我正在修改一个c项目,这是我第一次尝试在我的项目中使用stdlib.h和string.h库。我正在研究MCUXpresso(基于eclipse的IDE)。这是我的代码:

#include <string.h>
#include <stdlib.h>
#include "config.h"

int number=100;
int n1,n2;
char test[5]="test";
char str[5];

extern void fntest(TTASKTABLE *ptrTaskTable)
{
    itoa (number,str,10);
    n1=strlen(test);
    n2=atoi(test);
}

正如您所看到的,我已经包含了头文件,但编译器给出了错误:未定义引用'itoa';未定义引用'strlen';未定义引用'atoi' 在我的include文件夹中,已经存在(默认情况下在我的项目中)包含标准库的文件夹。 我看到函数在项目中的其他一些文件中使用...我无法理解为什么我会出现这个错误。 在原始代码中,函数是一个正文函数,我已经纠正了这一点。 你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

我不知道您是否发布了实际代码,但是在此阶段已经上传了它不会编译。

#include <string.h>
#include <stdlib.h>
#include "config.h"

int number=100;        // This is okay
int n1, n2;            // This is okay
char test[5]="test";   // This is okay
char str[5];           // This is okay

itoa (number,str,10);  // This is wrong
n1=strlen(test);       // This is wrong
n2=atoi(test);         // This is wrong

无论我附加评论// This is wrong是什么,都是因为,这些需要在函数体中。

现在你已经说过了,

  

我看到这些函数在项目的其他一些文件中使用..

我没有为您提供实现itoa功能的方法。

<强>更新 从现在开始,您已将其添加到函数中,我所谈论的内容是固定的。现在,理想情况下应该编译,只要在其中一个包含的头文件中有itoa函数的有效定义。

答案 1 :(得分:0)

最后我解决了我的问题! Ijust必须更改链接器设置:project - &gt; properties - &gt; C / C ++ Build - &gt; settings - &gt; MCU Linker - &gt; general和change form没有启动或默认库不要使用标准启动文件,然后没有更多错误!