Ошибка связывания при вызове функции, которая принимает вектор объектов в качестве аргумента - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть функция, которая принимает вектор объектов в качестве аргумента. заголовок функции:

void Evolve(vector <C_Agent> &population)

код компилируется должным образом, пока я не пытаюсь вызвать функцию. Я называю это так:

vector <C_Agent> AgentPopulation;
for(int q=0; q < x; q++)
    AgentPopulation.push_back(C_Agent());
Evolve(AgentPopulation);

когда я пытаюсь позвонить, я получаю сообщение об ошибке:

"Evolve(__gnu_debug_def::vector<C_Agent, std::allocator<C_Agent> >)", referenced from:  
main in main.o  
ld: symbol(s) not found  
collect2: ld returned 1 exit status

Я могу устранить ошибку, изменив аргумент на int вместо вектора C_Agent.
Я пытался закомментировать тело функции, но это не помогает.

1 Ответ

1 голос
/ 22 февраля 2011

nm из binutils - ваш друг. Он скажет вам, какой символ main.o пытается сослаться, и какой символ другой объектный файл, с определением скомпилированной функции, фактически делает общедоступным. Несоответствие между двумя вариантами приведет вас к причине несоответствия и, следовательно, к решению вашей проблемы. Вы не предоставили достаточно информации людям, находящимся здесь, во Всемирной паутине, чтобы поставить вам диагноз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...