C++ LNK2019:在WinMain中调用函数

C++ LNK2019:在WinMain中调用函数,c++,C++,我到处都找遍了,似乎找不到答案。显然没有人做过这样的事。我正在尝试从用户那里获取输入 while(!done) { PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE); if (msg.message == WM_QUIT) { done = true; //if found, quit app } else if (msg.message == WM_KEYDOWN) { game->Key

我到处都找遍了,似乎找不到答案。显然没有人做过这样的事。我正在尝试从用户那里获取输入

while(!done)
{
    PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE);
    if (msg.message == WM_QUIT) {
        done = true; //if found, quit app
    } else if (msg.message == WM_KEYDOWN) {
        game->KeyDown(msg.wParam);
    } else if (msg.message == WM_KEYUP) {
        game->KeyUp(msg.wParam);
    } else {
        /*  Translate and dispatch to event queue*/
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
return msg.wParam;
当我运行它时,它会显示错误:

error LNK2019: unresolved external symbol "public: void __thiscall Game::KeyDown(unsigned int &)" (?KeyDown@Game@@QAEXAAI@Z) referenced in function _WinMain@16
我在游戏类的标题中定义了所有内容。。。它的子系统设置为nothing,但是“(/subsystem:WINDOWS)”可以工作。

小菜一碟。“未解析外部符号”最常见的意思是您声明了一个函数,但没有指定它的作用。考虑下面的例子:

void undefined();
void LNK2019()
{
   undefined(); //the offending line
}
void main()
{
    //doesn't even have to do anything; it's not a runtime error
}
函数
LNK2019()
调用
undefined()
,但您从未告诉
undefined()
该怎么做。你的链接器不知道如何利用这条线。在您的特定情况下,我打赌
Game::KeyDown
没有身体

关于代码的其他一些注释:

  • 对于Windows消息,避免使用
    if-else
    树;使用
    开关盒
    。它通常更快,而且更具可读性

  • 我从未见过这样的循环处理消息。您的(其功能通常缩短为
    WndProc
    )应处理所有Windows消息-的全部目的是向该功能发送消息

  • 小菜一碟。“未解析外部符号”最常见的意思是您声明了一个函数,但没有指定它的作用。考虑下面的例子:

    void undefined();
    void LNK2019()
    {
       undefined(); //the offending line
    }
    void main()
    {
        //doesn't even have to do anything; it's not a runtime error
    }
    
    函数
    LNK2019()
    调用
    undefined()
    ,但您从未告诉
    undefined()
    该怎么做。你的链接器不知道如何利用这条线。在您的特定情况下,我打赌
    Game::KeyDown
    没有身体

    关于代码的其他一些注释:

  • 对于Windows消息,避免使用
    if-else
    树;使用
    开关盒
    。它通常更快,而且更具可读性

  • 我从未见过这样的循环处理消息。您的(其功能通常缩短为
    WndProc
    )应处理所有Windows消息-的全部目的是向该功能发送消息


  • 经过一个小时的寻找这个错误。。谢谢你。我完全错过了放球游戏::在KeyDown面前..@BrandonWoolworth xD我知道那种感觉,兄弟。如果有帮助的话,考虑接受它。一小时后才发现这个错误。谢谢你。我完全错过了放球游戏::在KeyDown面前..@BrandonWoolworth xD我知道那种感觉,兄弟。如果有帮助,就把它当作答案。