在c++中报错error: undefined reference to `xxx',意思是引用了未定义的方法。造成这个问题有很多原因,这里介绍我遇到的两个问题。
1.未引用对应的头文件或者是在头文件中引用的库函数版本不一致,在不同版本的库中可能对同一个实现方法起的名字不一致,造成了这个问题。
2.使用extern关键字的方法不对,extern有很多用法,这里extern起到的作用是引用其他文件的函数。
a.h:
//a.h
#ifndef AH
#define AH
extern int test();//这里的返回类型和参数必须和实现方法一致
#endif
aaa.cpp
//aaa.cpp
#include <stdio.h>
#include <iostream>
#include "a.h" //两个都需要引用对应的头文件,否则会报错
using namespace std;
int test()
{
cout << "abc" <<endl;
}
bbb.cpp
//bbb.cpp
#include <stdio.h>
#include <iostream>
#include "a.h" //两个都需要引用对应的头文件,否则会报错
int main()
{
test();
}
运行结果:
如果任意一个cpp文件中没有引用对应的头文件,就会报错。