未定义的'print(int)'引用[链接器错误]

时间:2012-10-12 02:58:39

标签: linker-errors

作业说:写一个由两个源文件组成的程序。第一个(Main.c)包含main()函数,并为变量i赋值。第二个源文件(Print.c)将i乘以2并打印出来。 Print.c包含函数print(),可以从main()调用。

在我尝试执行此任务时,我创建了三个文件: main.cpp中

#include <stdio.h>
#include "print.h"
using namespace std;

// Ex 1-5-3

// Global variable
int i = 2;


int main() {
    print(i);

    return 0;
}

print.cpp:

#include <stdio.h>
#include "print.h"
using namespace std;

// Ex 1-5-3

// Fetch global variable from main.cpp
extern int i;

void print(int i) {
    printf("%d", 2*i);
}

print.h:

#ifndef GLOBAL_H // head guards
#define GLOBAL_H

void print(int i);

#endif

我编译了print.cpp,当我尝试编译并运行main.cpp时,它说: [链接器错误]对'print(int)'

的未定义引用

为什么它不接受我在print.cpp中对void print(int i)的定义,并通过头文件print.h引用它?谢谢!

1 个答案:

答案 0 :(得分:2)

不确定您正在使用哪种编译器,但我已将其用于Linux / gcc:

$ gcc main.cpp print.cpp -o test
$ ./test 
$ 4 
$