我最近在一台新计算机上安装了 SDL 和 VS 2010,我的测试应用程序出现了问题。这是代码:
#include <SDL.h>
#include <SDL_opengl.h>
#undef main
int INIT_SDL_OPENGL()
{
if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
{
return 1;
}
SDL_SetVideoMode(640, 360, 32, SDL_OPENGL);
SDL_WM_SetCaption("Skeleton Example", NULL);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glDisable(GL_DEPTH_TEST);
return 0;
}
void EndQuitly()
{
SDL_Quit();
exit(0);
}
int main(int argc, char **argv)
{
INIT_SDL_OPENGL();
glBegin(GL_LINES);
glVertex2f(360, 180);
glVertex2f(640, 360);
glEnd();
EndQuitly();
return 0;
}
错误是:
error LNK1120: 4 unresolved externals C:\Users\einat\Documents\Visual Studio 2010\Projects\SkeletonOpenGLExample.c\Debug\SkeletonOpenGLExample.exe 1 SkeletonOpenGLExample error LNK2019: unresolved external symbol _SDL_Init referenced in function "int __cdecl INIT_SDL_OPENGL(void)" (?INIT_SDL_OPENGL@@YAHXZ) C:\Users\einat\Documents\Visual Studio 2010\Projects\SkeletonOpenGLExample.c\SkeletonOpenGLExample.c\testSDL.obj SkeletonOpenGLExample error LNK2019: unresolved external symbol _SDL_Quit referenced in function "void __cdecl EndQuitly(void)" (?EndQuitly@@YAXXZ) C:\Users\einat\Documents\Visual Studio 2010\Projects\SkeletonOpenGLExample.c\SkeletonOpenGLExample.c\testSDL.obj SkeletonOpenGLExample error LNK2019: unresolved external symbol _SDL_SetVideoMode referenced in function "int __cdecl INIT_SDL_OPENGL(void)" (?INIT_SDL_OPENGL@@YAHXZ) C:\Users\einat\Documents\Visual Studio 2010\Projects\SkeletonOpenGLExample.c\SkeletonOpenGLExample.c\testSDL.obj SkeletonOpenGLExample error LNK2019: unresolved external symbol _SDL_WM_SetCaption referenced in function "int __cdecl INIT_SDL_OPENGL(void)" (?INIT_SDL_OPENGL@@YAHXZ) C:\Users\einat\Documents\Visual Studio 2010\Projects\SkeletonOpenGLExample.c\SkeletonOpenGLExample.c\testSDL.obj SkeletonOpenGLExample
我查阅了几个教程并遵循了所有链接说明,但如果它们看起来有效,则没有一个。
提前致谢(抱歉,我不知道如何正确格式化错误
最佳答案
确保您链接到 .lib 文件并确保 SDL.dll 位于您的 system32 或 sysWOW64(对于 x64 pc)文件夹或您运行程序的目录中。
如果您不确定它们是否链接,您可以在运行时使用以下链接。还要确保您的项目设置为控制台。
#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "SDL.lib")
你也在使用 opengl 所以也使用 #pragma comment(lib, "opengl32.lib")
可能 related .
关于c++ - SDL 的 LNK 2019 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16413361/