这似乎很简单,但是编译会以某种方式发送此错误消息,我无法理解该错误消息,因此更正了我的代码。
这是我所做的简化版本,只是它可以为您显示错误:
Main.cpp
include "myfunction.h"
int main(){
std::vector<int> myVet = {1,4,3};
sequence(1,2,1,myVet);
}
myfunction.h
#include <vector>
/*funtion creates a sequence*/
void sequence(int start, int end,
int step, std::vector<int> skip);
myfunction.cpp
#include "myfunction.h"
void sequence(int start, int end,
int step, std::vector<int> skip){
auto x = 0;
};
这给我一条错误消息,提示
In function 'main':
/home/machina/Documents/Grafos&Redes/Implementação/main.cpp:18: undefined reference to 'sequence(int, int, int, std::vector <int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status
您能解释一下为什么它出现吗?
这是我一直在使用的以下命令
g++ -std=c++11 -g -Wall -Wextra -Werror main.cpp -o main.out
答案 0 :(得分:0)
您只将main.cpp
传递给g ++。
g ++需要了解myfunction.cpp,其中定义了函数,以便将其编译并链接到程序。
要使用的命令应该是:
g++ -std=c++11 -g -Wall -Wextra -Werror main.cpp myfunction.cpp -o main.out