未解析的外部符号,即使我认为我正确链接(MSVC)

unresolved external symbol even though i think i am linking correctly (MSVC)

本文关键字:链接 MSVC 外部 符号      更新时间:2023-10-16

我有一个使用SDL作为外部库的项目。该项目使用了_SDL_WM_SetCaption、_SDL_FillRect或_SDL_MapRGBA等函数。我已经告诉链接器包括这两个库SDL。lib和SDLmain。Lib并告诉它查找这些库所在的文件夹。我还用dumpbin.exe检查了库文件,函数在那里。然而,它仍然不工作编译/链接?为什么?有人有什么想法吗?

以下是链接器/编译器错误的输出示例:

14>libtestd.lib(sdlgl.obj) : error LNK2019: unresolved external symbol _SDL_WM_SetCaption referenced in function "public: void __thiscall SDLGLEngine::SetTitle(char *)" (?SetTitle@SDLGLEngine@@QAEXPAD@Z)
14>libtestd.lib(sdlgl.obj) : error LNK2019: unresolved external symbol _SDL_FillRect referenced in function "public: bool __thiscall SDLGLEngine::Init(int,int,int,bool)" (?Init@SDLGLEngine@@QAE_NHHH_N@Z)
14>libtestd.lib(sdlgl.obj) : error LNK2019: unresolved external symbol _SDL_MapRGBA referenced in function "public: bool __thiscall SDLGLEngine::Init(int,int,int,bool)" (?Init@SDLGLEngine@@QAE_NHHH_N@Z)
14>libtestd.lib(sdlgl.obj) : error LNK2019: unresolved external symbol _SDL_SetVideoMode referenced in function "public: bool __thiscall SDLGLEngine::Init(int,int,int,bool)" (?Init@SDLGLEngine@@QAE_NHHH_N@Z)
14>libtestd.lib(sdlgl.obj) : error LNK2019: unresolved external symbol _SDL_GL_SetAttribute referenced in function "public: bool __thiscall SDLGLEngine::Init(int,int,int,bool)" (?Init@SDLGLEngine@@QAE_NHHH_N@Z)
14>libtestd.lib(sdlgl.obj) : error LNK2019: unresolved external symbol _SDL_Quit referenced in function "public: bool __thiscall SDLGLEngine::Init(int,int,int,bool)" (?Init@SDLGLEngine@@QAE_NHHH_N@Z)
14>libtestd.lib(sdlgl.obj) : error LNK2019: unresolved external symbol _SDL_Init referenced in function "public: bool __thiscall SDLGLEngine::Init(int,int,int,bool)" (?Init@SDLGLEngine@@QAE_NHHH_N@Z)

可能原因

    sdl
  • 。自由和自由。lib设置未添加到依赖列表
  • 它们的位置没有被添加到链接器查找的目录列表中
  • 你有不匹配的32和64位版本的库。