【发布时间】:2014-01-24 22:42:45
【问题描述】:
我正在使用 Visual Studio 2013 和 SDL 2.0.1,由于某种原因,我收到一大堆类似以下的错误:
Error 2 error LNK2019: unresolved external symbol _SDL_DestroyWindow referenced in function "public: virtual __thiscall Display::~Display(void)" (??1Display@@UAE@XZ) c:\Users\Toby\documents\visual studio 2013\Projects\OpenGLTutorialProject\OpenGLTutorialProject\Display.obj OpenGLTutorialProject
我将 SDL 链接到我的程序的步骤: - 创建了一个名为 include 的文件夹,并将 SDL/include 中的所有文件放入我项目的 include 文件夹中。 -为我的项目创建一个lib文件夹,并将SDL/lib中的所有内容放入其中。 - 转到 Properties -> Linker -> General -> Additional Library Directories 并将其指向我在项目中的 lib 文件夹。 - 转到 Properties -> C/C++ -> General -> AdditionalInclude Directories 并设置我项目中包含文件夹的路径。 - 前往 Properties -> Linker -> Input-> Additional Dependencies 并输入以下内容:
glew32.lib
glew32s.lib
SDL2.lib
SDL2main.lib
SDL2test.lib
OpenGL32.lib
是的,我还包括 GLEW,它可以正常工作并提供链接。
当我输入这个时:
#include<SDL2/SDL.h>
Visual Studio 实际上为我完成了它,因此 Visual Studio 知道 SDL 存在于项目中。然而,在那之后,我尝试运行和编译,我遇到了一堆未解决的外部符号错误,然后是这样的:
Error 12 error LNK1120: 11 unresolved externals c:\users\toby\documents\visual studio 2013\Projects\OpenGLTutorialProject\Debug\OpenGLTutorialProject.exe OpenGLTutorialProject
我搜索了一下,似乎 SDL 曾经在使用 Visual Studio 2013 时遇到过问题,但后来这些错误都被解决了。我还确保像这样设置我的主要方法:
int main(int argc, char **argv)
因为我听说 SDL 对 main 方法中的参数很挑剔。谁能告诉我我做错了什么?
【问题讨论】:
-
非常感谢您的帮助...
-
顺便说一句,您不应该将
glew32.lib和glew32s.lib都作为软件的依赖项。一个(glew32)是DLL导入库,另一个是静态的(glew32s)。如果您在包含glew.h之前#define GLEW_STATIC(我建议您这样做,因为 DLL 版本不提供任何真正的好处)链接到glew32s.lib,否则链接到glew32.lib并记住将 GLEW DLL 与您的软件一起分发. -
对不起,我刚开始学习我找到的教程。老实说,我对 C++ 很陌生,虽然对编程并不陌生 @AndonM.Coleman
标签: c++ opengl sdl visual-studio-2013