2015-01-07 40 views
0

我在嘗試解決我的other question時涉及到GLEW內部,涉及Mac的丟失__glewX*符號,並發現它們受到GLEW_APPLE_GLX的保護。GLEW_APPLE_GLX在構建GLEW時導致鏈接錯誤

當我試圖從與定義的標誌來源建立GLEW,我得到了一個未定義符號(東西像_glXGetClientString)。鏈接到X11(-lX11)沒有幫助。

問題:假設定義GLEW_APPLE_GLX確實有意義,我該如何修復構建?

回答

0

在編譯使用,而不是使用CGL X服務器(XQuartz)的應用程序,您還需要添加-lGL

通常建立在OS X GL軟件當您使用OpenGL.framework-framework OpenGL),並得到您的OpenGL和CGL/AGL功能,但保留了GLX。

你也應該拋棄任何包含的東西,如<OpenGL/gl.h>,並使用<GL/gl.h>來代替,因爲這將指向/usr/X11R6/include/GL/...而不是OpenGL框架頭。

+0

哦,這是有道理的。而且,用'-lGL'調整makefile可以解決這個問題。具體來說,我將'-DGLEW_APPLE_GLX'添加到'CFLAGS'和'-L/usr/x11R6/lib/-lX11.6 -lGL.1'到'LIB.LDFLAGS'(修復了庫的構建,儘管不是'glewinfo' )。還要注意,不應該使用包含'*/gl.h'的東西; GLEW是爲了取代它們。 – imallett

+0

注意:即使程序_compiles_,我仍然[在運行時得到問題](http://stackoverflow.com/questions/27830635/dyld-missing-glx-from-libx11)。 – imallett