尝试输入向量时对序列的未定义引用

Undefined reference to sequence when trying to input a vector

提问人:Chronus 提问时间:11/13/2018 更新时间:11/15/2018 访问量:1239

问:

这似乎很简单,但不知何故,编译会发送我无法理解的错误消息,从而更正我的代码。

这是我所做操作的简化版本,只是为了让您看到错误:

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);

我的函数.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
C++11 向量 未定义引用

评论

1赞 rafix07 11/13/2018
您需要构建所有源文件,在构建时丢失。将命令行更改为myfunction.cpp... -Werror main.cpp myfunction.cpp -o main.out

答:

0赞 Adham Zahran 11/15/2018 #1

您只是传递给 g++。main.cpp

G++ 需要了解定义函数的 myFunction.cpp,以便编译并将其链接到您的程序。

要使用的命令应为:

g++ -std=c++11 -g -Wall -Wextra -Werror main.cpp myfunction.cpp -o main.out