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

标签 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: 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 位版本不匹配。

关于c++ - 未解析的外部符号,即使我认为我链接正确(MSVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15735653/

相关文章:

c - undefined reference

c++ - 在 Windows 上使用 clang 编译 CUDA 时的重新定义

c++ - 无论我传递字符串文字还是字符串对象,如何使该功能模板正常工作?

c++ - 我可以在 native C++ 服务中使用 ATL 吗?

c++ - 如何将一个或多个(未定义的数字)参数传递给函数?

asp.net - UserControl 没有名为 ContentTemplate 的公共(public)属性

c# - TFS 2010 API 文档

android - Android 上的链接错误

.net - 在VS 2010 C#项目之间共享.cs文件

c++ - 如何消除链接器错误 mingw32/bin/ld.exe : cannot find -lSDL