Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误LNK2019:未解析的外部符号&引用;在函数中引用_C++_Visual C++_Unresolved External - Fatal编程技术网

C++ 错误LNK2019:未解析的外部符号&引用;在函数中引用

C++ 错误LNK2019:未解析的外部符号&引用;在函数中引用,c++,visual-c++,unresolved-external,C++,Visual C++,Unresolved External,我当前在编译代码时遇到以下错误: 错误LNK2019:未解析的外部符号“public:void\u thiscall Agent::printSelf(void)”(?printSelf@Agent@@QAEXZ)在函数“public:void _uthiscall World::processMouse(int,int,int,int)”中引用(?processMouse@World@@QAEXHHHH@Z)世界银行 这是我的密码 代理h: class Agent { public:

我当前在编译代码时遇到以下错误:

错误LNK2019:未解析的外部符号“public:void\u thiscall Agent::printSelf(void)”(?printSelf@Agent@@QAEXZ)在函数“public:void _uthiscall World::processMouse(int,int,int,int)”中引用(?processMouse@World@@QAEXHHHH@Z)世界银行

这是我的密码

代理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];
}
}
void代理::printSelf()
{
printf(“代理种类=%i\n”,种类);
for(inti=0;iprocessMouse(按钮、状态、wx、wy);
}
mousex=x;mousey=y;
downb[按钮]=1-状态;
}
void World::processMouse(int按钮、int状态、int x、int y)
{
如果(状态==0){
浮想联翩=1e10;
浮动迷你=-1;
浮动d;

对于(int i=0;i最可能的原因是您没有链接从
Agent.cpp
创建的对象

您应该检查以确保它是项目的一部分,并且使用的是正确的版本,也使用当前编译器编译(由于您声明已经有一段时间没有接触它了,可能是对象是使用早期编译器版本构建的,这可能会使它们不兼容,例如,不同的名称篡改方法)

尝试的第一件事(一旦您在项目中建立了所有正确的文件)是完全清理和构建

关于其他几点:

  • 错误发生在
    World::processMouse
    中,这意味着
    GLView::processMouse
    的源代码可能不相关

  • < > > > >我发现你的混合代码> Prtff < /C>和 CUT略微……令人烦恼。你应该避免严重的C++编程的<代码> Prtff<代码>。它是有效的,但它主要用于遗留C支持。


    在VisualStudio2008中观察到同样的问题。
    清理,然后重建对我有效。

    您是否编译并链接了
    cpp
    文件?类定义是否有效?我没有看到任何右括号。Visual Studio很脆弱。有时是“全部重建”我会这样做的,因为增量重新编译没有重建它应该重建的内容。Make
    Agent.cpp
    实际上在项目中,而不仅仅是目录中的一个文件。请您发布World::processMouse代码好吗?我添加了正确的processMouse方法Clean,重建工作让我惊讶,因为我认为我已经尝试过了。谢谢!
    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);
         }
     }