您列出的代碼;
#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,因爲該網站實際上有兩個版本的教程。
UPDATE:
我沒有注意到你的平臺是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;
}
希望有所幫助。
您是否在'/ usr/include/SDL'和'/ usr/include/SDL2'中找到這些文件? – vmonteco
我現在在/ usr/include /中有SDL和SDL2的文件夾。 –