我想編譯一個使用SDL進行上下文創建和圖像加載的OpenGL程序。當我在Linux上進行本地編譯時,它編譯並運行時沒有錯誤。我在/ opt/mxe中安裝了MXE,並且檢查了SDL2目錄(包含頭文件)在/opt/mxe/usr/i686-w64-mingw32.static/include/
中,而相應的庫(libSDL.a
等)位於/opt/mxe/usr/i686-w64-mingw32.static/lib/
中。使用MXE和SDL2導致多個「未定義的引用」錯誤
所包含頭文件<SDL2/SDL.h>
和<SDL2/SDL_image.h>
我試圖編譯使用
i686-w64-mingw32.static-gcc 5_transformation.c -I/opt/mxe/usr/i686-w64-mingw32.static/include -L/opt/mxe/usr/i686-w64-mingw32.static/lib -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lGLEW -lopengl32 -lm -mwindows
然而上述程序,它提供了多種未定義引用錯誤:[http://pastebin.com/JaadTNnv
] 1
許多這些錯誤似乎與Direct3D等有關,我不使用(但SDL2可能在內部)。我是否也必須與他們聯繫?我是否做對了? (MXE頁面似乎沒有任何詳細的說明)。
PS。這個問題,或者它的變種,似乎在互聯網上非常流行。不過,我已經遵循了他們的指示。我的主要功能定義爲int main(int argc, char *argv[])
,我正在鏈接-lmingw32,-lSDL2main和-mwindows,我已經確認GCC參數中的路徑是正確的,我試圖將i686-w64-mingw32.static-sdl-config --cflags --libs
和i686-w64-mingw32.static-pkg-config SDL_image --cflags --libs
作爲參數,而不是顯式鏈接給出了對SDL功能的未定義參考,如SDL_GL_CreateContext
和IMG_Load
,並表示Package SDL_image was not found in the pkg-config search path.
)。
我不得不玩弄路徑並點了點兒命令,但是pkg-config終於有效(sdl-config仍然沒有,出於某種原因) –