【发布时间】:2024-01-12 14:15:01
【问题描述】:
我使用wx-config --libs 为我的应用程序生成链接器参数,输出如下:
-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,它似乎已被标记为已弃用。是否有比我链接的文档更新的文档?
【问题讨论】:
-
将要链接的库放在哪里?我的意思是在命令行上?目标文件和库的顺序可能很重要。始终将库放在您的对象(或源)文件之后。
-
行尾:
$(CXX) -o $@ $(OBJECTS) $(LDFLAGS)...LDFLAGS 是... > -
Reading this wiki 看来您需要在
wx-config命令中添加--gl-libs才能获取OpenGL 库。你试过吗? -
如果您安装了 2 个版本的
wxWidgets,您可能有 2 个版本的配置工具。在我的系统上,如果我使用v3标头,我必须使用wx-config-3.0而不是wx-config。 -
Joachim 做到了,谢谢! @Galik 尽管安装了 3.0 dev,但我似乎没有 wx-config-3.0。
标签: c++ wxwidgets deprecated undefined-reference