2011-05-17 169 views
0

我写的样本SDL程序,我只写了简单的程序,但我得到,因为我SDL_pollevent()函数的以下错误:SDL LD返回1退出状态

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; 
} 
+0

什么是链接器命令行?另外,如果在SDL_Init()调用之前的某个地方没有调用SDL_PollEvent(),它将不会工作得很好。 – genpfault 2011-05-17 14:52:36

回答

4

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

我认为内调用SDL_Init()?否则你的程序将无法正常运行。

+0

哟男士非常感谢,-lSDL完成了这项工作。我不能够感谢你,这让我感到很难过,因为这是一段很长的时间。再次感谢 – Koryo 2011-05-19 04:50:51

+0

嘿嘿,没问题:) – Orka 2011-05-19 05:08:28

0

首先,确保你包括SDL.h,它看起来像这样在大多数平台:

#include "SDL.h" 

如果你在Xcode在Mac上建立,你要使用它代替:

#include <SDL/SDL.h> 

然后确保你对SDL框架链接:

  • 如果你正在使用Visual Studio(Windows)中,R点击该项目并调出属性,然后在配置属性>链接器>输入下,确保附加依赖项为SDL.lib SDLmain.lib
  • 如果您使用的是Xcode(Mac),请查找SDL.framework(可能位于/ Library/Frameworks下)并将其拖到项目的Frameworks文件夹中。
  • 如果您从命令行调用GCC,请通过将-lSDL -lSDLmain添加到命令行来链接到libSDL.a和libSDLmain.a。
相关问题