调用一个以对象向量作为参数的函数时链接错误

时间:2011-02-22 09:28:13

标签: c++ function vector linker

我有一个函数,它接受一个对象向量作为它的参数。函数头是:

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 个答案:

答案 0 :(得分:1)

来自binutils

nm是您的朋友。它将告诉您符号main.o试图引用什么符号以及其他目标文件(带有已编译的函数定义)实际上是公开的符号。 twain之间的不匹配将导致你不匹配的原因,从而解决你的问题。您没有为万维网上的人员提供足够的信息来为您诊断。