[英]sdl, sdl2 error: SDL_window (among others) not declared
我玩C++
已經有一段時間了,最近才開始接觸SDL
和SDL2
。
我能夠使點演示程序正常工作。
但是其他程序,例如Lazy Foo'Productions的復制和粘貼似乎不起作用。 我都SDL和SDL2安裝我在Ubuntu 15.04和我有聯系的IDE代碼塊((和卸載並重新安裝。) -ISDL2
)的錯誤是SDL_Window
- SDL_WINDOWPOS_UNDEFINED
- SDL_WINDOW_SHOWN
- SDL_CreateWindow
- SDL_GetWindowSurface
- SDL_UpdateWindowSurface
最后, SDL_DestroyWindow
-在這方面沒有申明。
另外,我包括:
#include </usr/include/SDL/SDL.h>
#include </usr/include/SDL2/SDL.h>
#include <stdio.h>
我敢肯定,我並不需要所有的位置,但是沒有它也不起作用。 另一個注意事項是,當我鍵入#includes
,CodeBlocks將建議使用SDL2/SDL.h
而不是SDL/SDL.h
我想念什么?
我認為我不能在這里放下Lazy Foo'代碼-我沒有得到許可...
您列出的代碼;
#include </usr/include/SDL/SDL.h>
#include </usr/include/SDL2/SDL.h>
#include <stdio.h>
你為什么不改成
#include <SDL2/SDL.h>
#include <stdio.h>
作為第一個標頭是在其中SDL_CreateWindow
和其他SDL2函數的地方?
另外,您不需要同時包含SDL和SDL2標頭。 確實,這很可能是問題的根源,因為您只需要包括所使用的版本即可。
如果您正在從lazyfoo的站點上學習教程,則可以從目錄中檢查正在遵循的教程是否正在使用SDL1.2或SDL2,因為該站點實際上具有兩個版本的教程。
更新:
我沒有注意到您的平台是Linux平台。 然后,解決您的問題變得容易得多。 您先前遵循的演示是使用SDL-1.2完成的,而gcc錯誤提示您使用的是SDL-2.0,因此顯示了SDL_CreateWindow
和其他未定義的錯誤。 您應該安裝SDL-2.0庫和SDL-2.0開發文件(它將為您提供必要的SDL-2.0標頭)。 您可以參考平台發行版提供的SDL-2.0軟件包。
至於編譯,它將與您遵循的教程相同,只是進行了微小的更改,而不是gcc sdltest.o -lSDL -o sdltest
,而是發出gcc sdltest.o -lSDL2 -o sdltest
來指示您正在將代碼鏈接到SDL2庫。
編輯
一個簡單的SDL程序來測試您的環境。 您可以使用任何較簡單的文本編輯器(例如nano
或gedit
或其他編輯器)進行編輯,然后運行上面的編譯命令來測試您的設置。
最簡單的方法是復制代碼,然后從終端中發出cat > sdltest.cpp
並粘貼代碼,然后按[ENTER]和[CTRL-C]結束代碼。 然后,您可以發出前面提到的編譯命令g++ sdltest.cpp -lSDL2 -o sdltest
。
碼;
#include <SDL2/SDL.h>
#include <stdio.h>
int main()
{
SDL_Window *p;
SDL_Renderer *w;
p = SDL_CreateWindow("Game",SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,800,640,SDL_WINDOW_SHOWN);
w = SDL_CreateRenderer(p, -1, 0);
SDL_RenderClear(w);
SDL_SetRenderDrawColor(w,255,0,0,255);
SDL_Rect Rect = {220,140,200,200};
SDL_RenderFillRect(w,&Rect);
SDL_RenderPresent(w);
SDL_Delay(3000);
SDL_DestroyRenderer(w);
SDL_DestroyWindow(p);
SDL_Quit();
return 0;
}
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.