我有一个函数,它接受一个对象向量作为它的参数。函数头是:
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的向量来消除错误 我试过评论功能体,但这没有帮助。
答案 0 :(得分:1)
nm
是您的朋友。它将告诉您符号main.o
试图引用什么符号以及其他目标文件(带有已编译的函数定义)实际上是公开的符号。 twain之间的不匹配将导致你不匹配的原因,从而解决你的问题。您没有为万维网上的人员提供足够的信息来为您诊断。