报错代码
同一个文件夹中三份文件:main.cpp, add.cpp, add.h
main.cpp 内容如下:
#include<iostream>
#include"add.h"
using namespace std;
int main(){
cout << add(3,4) << endl;
system("pause");
return 0;
}
add.cpp 内容如下:
#include"add.h"
int add(int a,int b){
return a+b;
}
add.h 内容如下
#ifndef __ADD_H__
#define __ADD_H__
int add(int,int);
#endif
报错
在 VSC中使用 CodeRunner执行main.cpp或通过Run→Run without debugging 执行main.cpp 均有以下报错:
undefined reference to `add(int, int)’
error: ld returned 1 exit status
原因
编译器链接的时候,通过main.cpp找到add.h,但并没有通过add.h 找到 add.cpp
解决方案
手动编译链接,在终端terminal中切换到该文件夹下,输入
g++ -cpp main.cpp add.cpp -o main.exe
生成可执行文件 main.exe,然后成功运行它
其它可能的错误原因和解决方案:
- 检查.h文件里的声明函数类型、名称、变量类型是否与.cpp文件一致
- 特别地,如果报错是undefined reference to `WinMain@16’,则是因为运行了不含有main函数的cpp文件。