2011-05-17 350 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。
相關問題