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

时间:2018-11-12 18:56:18

标签: c++11 vector undefined-reference

这似乎很简单,但是编译会以某种方式发送此错误消息,我无法理解该错误消息,因此更正了我的代码。

这是我所做的简化版本,只是它可以为您显示错误:

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

1 个答案:

答案 0 :(得分:0)

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

g ++需要了解myfunction.cpp,其中定义了函数,以便将其编译并链接到程序。

要使用的命令应该是:

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