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

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

我有一个将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和sdlmain.lib设置不会添加到依赖项列表中
  • 它们的位置未添加到链接器查看的目录列表中
  • 库的32位和64位版本不匹配

它们是否具有相同的编译标志?比如-MT/-MD?您是否链接到调试或发布版本?您是否将代码中的方法调用为
\u SDL\u Init
SDL\u Init
?嗯,我必须检查SDL\u Init…虽然您编写了
\u SDL\u FillRect
等,但我猜您的代码中没有前导下划线,因为编译器会抱怨没有链接器。你真的确定你的链接器设置正确吗?你能展示它们吗?编译标志看起来是一样的,而且,据我所知,SDL_Init等的调用是按预期的方式进行的。我已经链接了SDL的预编译版本,所以我不确定调试/发布。我唯一能猜到的是那里有些不正确的地方,所以,现在,我试着自己构建SDL,看看会发生什么。那件事做完后我会发回的。