簡體   English   中英

sdl,sdl2錯誤:未聲明SDL_window(以及其他)

[英]sdl, sdl2 error: SDL_window (among others) not declared

我玩C++已經有一段時間了,最​​近才開始接觸SDLSDL2

我能夠使點演示程序正常工作。

但是其他程序,例如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程序來測試您的環境。 您可以使用任何較簡單的文本編輯器(例如nanogedit或其他編輯器)進行編輯,然后運行上面的編譯命令來測試您的設置。

最簡單的方法是復制代碼,然后從終端中發出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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM