2016-09-24 74 views
0

我用wx-config --libs生成我的應用程序的連接參數,輸出如下:對wxGLCanvas構造函數的未定義引用?

-L/usr/lib/x86_64-linux-gnu -pthread -lwx_gtk2u_xrc-3.0 -lwx_gtk2u_html-3.0 -lwx_gtk2u_qa-3.0 -lwx_gtk2u_adv-3.0 -lwx_gtk2u_core-3.0 -lwx_baseu_xml-3.0 -lwx_baseu_net-3.0 -lwx_baseu-3.0

我的應用程序編譯但沒有鏈接,而不是引用一個未定義的參考構造一個wxGLCanvas。我知道一個構造函數已被棄用,但我似乎使用的不是:wxGLCanvas(<frame>,wxID_ANY,NULL),如http://docs.wxwidgets.org/3.0/classwx_g_l_canvas.html所示。

鏈接器錯誤的其餘部分都是對wxGLCanvas各種方法的未定義引用。爲了安全起見,我向所有目標添加了-DwxUSE_GLCANVAS=1,但這沒有效果。我究竟做錯了什麼?

如果它是相關的,我也是在編譯期間使用wx-config --cflags

-I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread

還要注意的是,文件還建議使用的setCurrent,這似乎被標記棄用。是否有最近的文檔比我鏈接的文檔更新?

+0

*你把哪些庫連接起來?我的意思是在命令行?目標文件和庫的順序可能很重要。總是把庫*放在你的對象(或源)文件之後。 –

+0

在該行的末尾: '$(CXX)-o $ @ $(對象)$(LDFLAGS)' ...其中LDFLAGS是... 'LDFLAGS:= $(LDFLAGS)$ $(wx-config --libs)-lGL' 順便說一下,當應用程序只是一個沒有wxGLCanvas的窗口時,它就會鏈接起來。 –

+2

[閱讀這個wiki](https://wiki.wxwidgets.org/WxGLCanvas)似乎你需要在'wx-config'命令中加入'--gl-libs'來獲得OpenGL庫。你嘗試過嗎? –

回答

1

wx-config --libs等價於wx-config --libs std其中「std」代表被默認使用的「標準」庫的子集。如果你想使用任何不在這個列表中的庫,比如「webview」,「richtext」或甚至「gl」,你需要明確地列出它們。

所以在你的情況下使用正確的命令是wx-config --libs std,gl