2016-09-24 62 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