C - 链接文件的函数错误的未定义引用

时间:2014-07-11 16:42:55

标签: c function codeblocks undefined-reference

我开始实施一个大型程序。但我遇到了一个大问题。所以这是我的程序非常简化的代码。我有一个单独的.c文件用于我的函数 normal.c 主程序是 main.c 我已将这两个与 cal.h < / strong>头文件。

的main.c

#include <stdio.h>
#include "cal.h"

void main()
{
    int num1, num2, ans;
    num1=5;
    num2=5;
    ans=add(num1, num2);
    printf("%d" ,ans);
}

normal.c

#include "cal.h"

int add(int num1, int num2)
{
    return num1+num2;
}

cal.h

#ifndef CAL_H_INCLUDED
#define CAL_H_INCLUDED
#include <errno.h>

int add(int num1, int num2);

#endif // CAL_H_INCLUDED

但是当我编译它时,它会发出错误 .. \ main.c | 10 |对'add&#39; |

的未定义引用

我在Windows 8.1中使用CodeBlocks v.13.12对此问题的任何答案都非常感谢。我也尝试使用CodeLite,但同样的错误发生了。谢谢!

3 个答案:

答案 0 :(得分:2)

ubuntu终端需要完整的代码编译 使用以下

gcc normal.c main.c -o out -lm

答案 1 :(得分:0)

代码块具有自动链接,但为此您需要在项目下拥有源文件和头文件。

当我创作个人时,我遇到了同样的问题.c&amp; .h文件并期望IDE链接目标文件但它失败了。我把它们放在一个项目下,它工作了!

答案 2 :(得分:0)

使用完整的代码编译。 如果您的c代码文件main.c和normal.c在./src中,而头文件cal.h在./inc中,请遵循以下方法从当前目录(。)

g ++ ./src/main.c ./src/normal.c -I ./inc -o main

现在main是要执行的二进制文件。