代码块:对myFct的未定义引用

时间:2015-04-21 11:01:59

标签: c codeblocks

的main.c

#include <stdio.h>
#include <stdlib.h>
#include "functions.h"

int main()
{
myFct();
return 0;
}

functions.h

#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
#include <stdio.h>

extern void myFct(void);

#endif // FUNCTIONS_H_INCLUDED

functions.c

#include "functions.h"

void myFct(void)
{
printf ("helloFCT");
}

在编译这个项目时,我有这个错误&#34;对myFct的未定义引用&#34;

我正在使用Code :: Blocks13.12和Windows 8

提前致谢

2 个答案:

答案 0 :(得分:2)

您需要编译这两个文件

当我刚编译main.c时出现错误

{yanivx@~/functions}$ gcc main.c
/tmp/ccoJitEe.o: In function `main':
main.c:(.text+0x7): undefined reference to `myFct'
collect2: ld returned 1 exit status

在使用这两个文件进行编译时,未发现任何错误。

{yanivx@~/functions}$ gcc main.c functions.c
{yanivx@~/functions}$ ./a.out
helloFCT

要在Codeblocks中编译多个文件,您需要创建一个包含所有文件的项目。

以下链接可以帮助您

http://forums.codeblocks.org/index.php?topic=13193.0

code::blocks - how to compile multiple file projects

“extern”改变了联系。使用关键字,假定函数/变量在其他地方可用,并且解析将延迟到链接器。

删除extern问题应该得到解决。

#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
#include <stdio.h>

void myFct(void);

#endif // FUNCTIONS_H_INCLUDED

答案 1 :(得分:0)

谢谢yanivx

我通过以下链接获得解决方案:

code::blocks - how to compile multiple file projects

“转到显示项目的左侧面板,然后右键单击.cpp文件。选择属性,然后转到构建。选中标题属于目标标题下的框:”调试“和”发布“”