-1

我正在修改 ac 项目,这是我第一次尝试在我的项目中使用 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);
}

如您所见,我已经包含了头文件,但编译器给出了错误: undefined reference to 'itoa' ;未定义对“strlen”的引用;对“atoi”的未定义引用并且在我的包含文件夹中已经(默认情况下在我的项目中)包含标准库的文件夹。我看到项目中的其他一些文件中使用了这些函数......我不明白为什么会出现这个错误。在原始代码中,函数位于主体函数中,我已经纠正了这一点。你能帮我吗?

4

2 回答 2

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在已包含的头文件之一中存在有效的函数定义。

于 2018-05-04T13:29:08.560 回答
1

终于我解决了我的问题!我只需要更改链接器设置:project-->properties-->C/C++ Build-->settings-->MCU Linker-->general 并更改形式 No startup or default libs to Do not use standard start files 然后没有更多的错误!

于 2018-05-07T09:20:26.867 回答