繁体   English   中英

错误LNK2019:函数中引用的未解析的外部符号“”

[英]error LNK2019: unresolved external symbol “” referenced in function

我编译代码时,我当前收到以下错误:

错误LNK2019:未解析的外部符号“public:void __thiscall Agent :: printSelf(void)”(?printSelf @ Agent @@ QAEXXZ)在函数“public:void __thiscall World :: processMouse(int,int,int,int)”中引用(?processMouse @ World @@ QAEXHHHH @ Z)World.obj

这是我的代码

Agent.h:

class Agent
{
public:
    Agent();

void printSelf();

Agent.cpp:

void Agent::printSelf()
{
printf("Agent species=%i\n", species);
for (int i=0;i<mutations.size();i++) {
    cout << mutations[i];
}
}

GLView.cpp:

void GLView::processMouse(int button, int state, int x, int y)
{
if(world->isDebug()) printf("MOUSE EVENT: button=%i state=%i x=%i y=%i\n", button, state, x, y);

if(button==0){
    int wx= (int) ((x-conf::WWIDTH/2)/scalemult-xtranslate);
    int wy= (int) ((y-conf::WHEIGHT/2)/scalemult-ytranslate);

    world->processMouse(button, state, wx, wy);
}

mousex=x; mousey=y;
downb[button]=1-state;
}


void World::processMouse(int button, int state, int x, int y)
{
 if (state==0) {        
     float mind=1e10;
     float mini=-1;
     float d;

     for (int i=0;i<agents.size();i++) {
         d= pow(x-agents[i].pos.x,2)+pow(y-agents[i].pos.y,2);
             if (d<mind) {
                 mind=d;
                 mini=i;
             }
         }
     if (mind<1000) {
         //toggle selection of this agent
         for (int i=0;i<agents.size();i++) {
            if(i!=mini) agents[i].selectflag=false;
         }
         agents[mini].selectflag= !agents[mini].selectflag;
         agents[mini].printSelf();
         setControl(false);
     }
 }

}

我很难过。 我很长一段时间没有处理过这段代码,所以我不确定是什么原因引起了这种情况。 有人看错了吗?

最可能的原因是您没有链接从Agent.cpp创建的对象。

您应该检查以确保它是项目的一部分,并且您正在使用正确的版本,也使用当前编译器编译(因为您声明您有一段时间没有触及它,可能是对象已构建使用较早的编译器版本,可能使它们不兼容 - 例如,不同的名称修改方法。

首先要尝试(一旦你在项目中建立了所有正确的文件)就是一个完整的清理和构建。

在其他几点上:

  1. World::processMouse发生错误,这意味着GLView::processMouse的源可能无关紧要。

  2. 我发现你混合了printfcout ......令人不安。 您应该避免使用printf进行严格的C ++编程。 它可以工作,但它主要用于传统的C支持。

在Visual Studio 2008中观察到同样的问题。清理,然后Rebuild为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM