我最近才开始使用 C++,显然我遇到了著名的 LNK2019 问题。我在谷歌上漫游了几个小时,但没有解决我的问题。我的项目是一半编码,因为我将视图和模型分开。我使用 Visual Studio 2010。
这是未检索到其功能的类:
显示.h:
#ifndef DEF_DISPLAY
#define DEF_DISPLAY
#include <Windows.h>
#include <exception>
class Display{
public:
HWND mainWindow, gameWindow;
WNDCLASS mainClass, gameClass;
public:
Display();
static LRESULT CALLBACK mainWindowProc(HWND mainWin, UINT message, WPARAM wParam, LPARAM lParam);
static LRESULT CALLBACK gameWindowProc(HWND gameWin, UINT message, WPARAM wParam, LPARAM lParam);
**int run();** // This function is not retrieved by the linker.
};
#endif
这是 Display.cpp:
#include "Display.h"
HINSTANCE instanceMain = 0, instanceGame = 0;
Display::Display(){...}
LRESULT CALLBACK Display::mainWindowProc(HWND mainWin, UINT message, WPARAM wParam, LPARAM lParam){...}
LRESULT CALLBACK Display::gameWindowProc(HWND gameWin, UINT message, WPARAM wParam, LPARAM lParam){...}
int run(){
MSG message;
while(GetMessage(&message, 0, 0, 0)){
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
最后是我的 main.cpp:
#include "Display.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow){
Display game;
return game.run();
}
我没有完成对我的项目的编码,因为我在构建它时发现了这个问题:
1> All outputs are up-to-date.
1>main.obj : error LNK2019: unresolved external symbol "public: int __thiscall Display::run(void)" (?run@Display@@QAEHXZ) referenced in function _WinMain@16
1>C:\Users\glembalis\Documents\Visual Studio 2010\Projects\pendu\Debug\pendu.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
我不知道错误可能发生在哪里。
- Display.h 和 Display.cpp 包含在项目中
- Project > Properties > Linker > System > SubSystem 中的选项是“Windows”
- 我不使用外部库(仅 Windows.h 和异常)
编译器似乎运行良好。我真的不在乎程序是否正常运行,我稍后会更正它。目前,这个链接器问题是我主要关心的问题!我想这只是一个小小的愚蠢错误,但我找不到它!
感谢大家的时间和关注,期待您的回答!最后,我很抱歉,但英语不是我的母语,我可能写了一些错误。
祝你今天过得愉快!
NoobFeeder