2011-03-26 71 views
0

好的OpenGL應用程序,所以這裏的情況:鏈接錯誤的大量時,交叉編譯的Windows

我有一個使用SDL和OpenGL應用程序。我一直在Linux(Ubuntu 10.10)中開發它,並在該平臺上編譯,構建和運行。我希望能夠在Windows上測試我的應用程序,爲此我一直試圖用MinGW工具鏈進行交叉編譯。現在,應用程序編譯時沒有任何警告,但是在我的生活中,我無法正確地鏈接OpenGL庫。具體而言,我收到以下錯誤了大量的時間:

未定義參考[email protected]'
undefined reference to
_glDetachShader @ 8'
未定義參考[email protected]'
undefined reference to
_glDeleteShader @ 4'
未定義參考[email protected]'
undefined reference to
_glCreateShader @ 4'
未定義參照[email protected]'
undefined reference to
_glCompileShader @ 4'
未定義參照[email protected]'
undefined reference to
_glGetShaderInfoLog @ 16'
未定義參考``_glAttachShader @ 8'
...等等

爲了完整起見,用於該應用程序鏈接的命令:

i586的-mingw32msvc-G ++ -Wall -g -DGL_GLEXT_PROTOYPES -o <output file><object files> -llib/LIB -lmingw32 -lSDLmain -lSDL -mwindows -lglu32 -lopengl32 -I./include -I/usr/include目錄-I./lib

谷歌搜索使我明白,glu32和opengl32庫僅支持OpenGL的早期版本(如1.1或1.4)和我的應用程序它使用OpenGL 3.0+特性,所以這是我目前的問題來自何處的理論。這就是說,我真的不知道如何解決它。

應該指出的是,我對軟件開發非常陌生,所以在這一點上,我對事物的工作原理的理解很淺薄。

回答

0

您遇到的問題是版本和可用功能,是的。理論上,你可以自己處理所有的東西,但我非常推薦使用GLEW來處理擴展和附加功能(可以大大簡化事情)。開始使用GLEW的基礎知識是here,一旦設置好了,使用額外的OpenGL功能就非常簡單。 GLEW還提供一些檢查來查看可用或驗證特定功能。

+0

這看起來非常有用,但是在接受此答案之前,我希望清理問題的理解存在差距。 AFAIK,我在我的應用程序中所做的所有OpenGL API調用都包含在Core Profile中,因此根據我的理解,使用GLEW不會對我有所幫助,因爲我需要的功能不是擴展。除非......是在Windows上作爲擴展實現的更新版本的OpenGL? – rjacks 2011-03-26 02:26:42

+0

我不確定它們是否作爲擴展實現,但我確定Windows上的標題和庫不包含它們,而GLEW則包含它們。 Windows GL.h等只能達到1.4左右,IIRC(儘管如此我可能是錯誤的)。 – ssube 2011-03-26 02:29:45

+0

謝謝!無論實際如何實施,似乎GLEW都可以提供我需要的功能。非常感激。 – rjacks 2011-03-26 02:32:49