C++ 未解析的外部符号,即使我认为我链接正确(MSVC)
我有一个将SDL用作外部库的项目。该项目使用诸如_SDL_WM_SetCaption、_SDL_FillRect或_SDL_MapRGBA等功能。我已经告诉链接器包含两个库SDL.lib和SDLmain.lib,并告诉它查看这些库所在的文件夹。我还使用dumpbin.exe检查了库文件,函数也在那里。但是,它仍然无法编译/链接?为什么?有人有什么想法吗 编辑:以下是链接器/编译器错误的示例输出:C++ 未解析的外部符号,即使我认为我链接正确(MSVC),c++,visual-studio-2010,linker,sdl,dynamic-linking,C++,Visual Studio 2010,Linker,Sdl,Dynamic Linking,我有一个将SDL用作外部库的项目。该项目使用诸如_SDL_WM_SetCaption、_SDL_FillRect或_SDL_MapRGBA等功能。我已经告诉链接器包含两个库SDL.lib和SDLmain.lib,并告诉它查看这些库所在的文件夹。我还使用dumpbin.exe检查了库文件,函数也在那里。但是,它仍然无法编译/链接?为什么?有人有什么想法吗 编辑:以下是链接器/编译器错误的示例输出: 14>libtestd.lib(sdlgl.obj) : error LNK2019: unre
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和sdlmain.lib设置不会添加到依赖项列表中
- 它们的位置未添加到链接器查看的目录列表中
- 库的32位和64位版本不匹配
\u SDL\u Init
或SDL\u Init
?嗯,我必须检查SDL\u Init…虽然您编写了\u SDL\u FillRect
等,但我猜您的代码中没有前导下划线,因为编译器会抱怨没有链接器。你真的确定你的链接器设置正确吗?你能展示它们吗?编译标志看起来是一样的,而且,据我所知,SDL_Init等的调用是按预期的方式进行的。我已经链接了SDL的预编译版本,所以我不确定调试/发布。我唯一能猜到的是那里有些不正确的地方,所以,现在,我试着自己构建SDL,看看会发生什么。那件事做完后我会发回的。