SDL ld返回1退出状态

时间:2011-05-17 02:55:03

标签: sdl

我正在编写一个示例SDL程序,我刚刚编写了最简单的程序,但由于我的SDL_pollevent()函数,我得到以下错误:

Test.cpp:(.text._ZN4CApp9OnExecuteEv[CApp::OnExecute()]+0x41): undefined reference to `SDL_PollEvent'
collect2: ld returned 1 exit status

,代码是:

int OnExecute()
{
    if(OnInit()==false)
        return -1;
    SDL_Event Event;
    while(Running)
    {
        while(SDL_PollEvent(&Event))
        {
            OnEvent(&Event);
        }
            OnLoop();
        OnRend();
    }
    OnClean();
    return 0;
}

2 个答案:

答案 0 :(得分:4)

这是链接器错误。您没有正确地将SDL库链接到项目。通常,您需要将-lSDL添加到链接器。如果您使用的是Windows,我相信您也必须添加-lSDLmain。确保您的编译器知道在哪里找到这些文件(正确设置库路径)。如果您不知道如何执行此操作,请查看this tutorial中的系统和IDE特定安装说明。

我假设在SDL_Init()内调用OnInit()?否则您的程序将无法正常运行。

答案 1 :(得分:0)

首先,确保包含SDL.h,在大多数平台上都是这样的:

#include "SDL.h"

如果您使用Xcode构建Mac,则需要使用此代码:

#include <SDL/SDL.h>

然后确保您已链接到SDL框架:

  • 如果您使用的是Visual Studio(Windows),请右键单击该项目并打开“属性”,然后在“配置属性”&gt;下。链接器&gt;输入,确保其他依赖项 SDL.lib SDLmain.lib
  • 如果您正在使用Xcode(Mac),请找到SDL.framework(可能在/ Library / Frameworks下)并将其拖到项目的Frameworks文件夹中。
  • 如果您从命令行调用GCC,请通过在命令行中添加 -lSDL -lSDLmain 链接到libSDL.a和libSDLmain.a。
相关问题