Неопределенная ссылка на последовательность при попытке ввода вектора - PullRequest
0 голосов
/ 12 ноября 2018

Это кажется простым, но каким-то образом компиляция отправляет это сообщение об ошибке, которое я не могу понять, поэтому исправьте мой код.

Это упрощенная версия того, что я сделал, просто для вас может появиться ошибка:

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 голосов
/ 14 ноября 2018

Вы только передаете main.cpp в g ++.

g ++ должен знать о myfunction.cpp, где определена ваша функция, чтобы скомпилировать и связать ее с вашей программой.

Команда для использования должна быть:

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

...