我正在尝试在 C++ 中使用标头。我有
calculation.h
和calculation.cpp
文件。我使用必要的参数调用了 add
和 sub
函数,这些参数在 calculation.h
文件中声明并在 calculation.cpp
文件中实现。我已将 calculation.h
文件包含在 calculation.cpp
文件中。但是每当我尝试运行我的main.cpp
文件时,它就会抛出这个错误!
[C:\Users\MAHBIN~1\AppData\Local\Temp\ccPy83Oj.o:main.cpp:(.text+0x32): undefined reference to `add(int, int)'
C:\\Users\\MAHBIN\~1\\AppData\\Local\\Temp\\ccPy83Oj.o:main.cpp:(.text+0x65): undefined reference to `sub(int, int)'
collect2.exe: error: ld returned 1 exit status]
main.cpp
文件:
#include<iostream>
#include"calculation.h"
using namespace std;
int main(){
int x=5, y=20;
cout<<add(x,y)<<endl;
cout<<sub(x,y)<<endl;
return 0;
}
calculation.h
文件:
#pragma once
int add(int, int);
int sub(int, int);
calculation.cpp
文件:
#include<iostream>
#include"calculation.h"
int add(int x, int y){
return x+y;
}
int sub(int x, int y){
if(x<y){
return y-x;
}
else return x-y;
}
但是每当我直接将
calculation.cpp
文件包含在 main.cpp
文件或 calculation.h
文件中时,它就可以工作!但是我想通过包含calculation.cpp
来使用calculation.h
。
如果我在终端中明确运行这个命令,它就可以工作!否则,它不会!
g++ -o main.exe main.cpp calculation.cpp
跑步
g++ -o main.exe main.cpp calculation.cpp
是正确的方法。
如果您不指定,编译器将不会继续编译其他 .cpp 文件。
如果您计划进行更大的项目,您可能会对使用像
CMake
这样的工具感兴趣。