我一直在尝试获取一些实现 GFLW3 的简单 GL 代码,以便在 QT Creator(在 Ubuntu 13.04 上)上进行编译。然而,当它尝试构建时,我不断得到相同的输出:
undefined reference to symbol 'XF86VidModeQueryExtension'
然后我转到 .pro 文件并链接 lXxf86vm.so 库文件并添加 -lXxf86vm 但它仍然给出相同的输出:
g++ -m64 -o GL-Test main.o windowtest.o frametest.o -L/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 -L/user/lib/x86_64-linux-gnu/libXxf86vm.so
-L/user/lib/x86_64-linux-gnu/libXxf86vm.a -L/user/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
-L/home/syk435/Testing\ Gl/GL-Test/../../../../usr/lib/x86_64-linux-gnu/ -lXxf86vm -lX11 -lGL -L/usr/local/lib -lglfw3
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_init.c.o): undefined reference to symbol 'XF86VidModeQueryExtension'
/usr/bin/ld: note: 'XF86VidModeQueryExtension' is defined in DSO /home/syk435/Testing Gl/GL-Test/../../../../usr/lib/x86_64-linux-gnu//libXxf86vm.so
so try adding it to the linker command line
/home/syk435/Testing Gl/GL-Test/../../../../usr/lib/x86_64-linux-gnu//libXxf86vm.so:
could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
如您所见,我尝试了四种不同的方法来链接正确的库,但它仍然给我相同的“未定义的引用”和“符号无法读取”错误。关于正确的链接方式有什么见解吗?
编辑:专业文件:模板=应用程序
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += link_pkgconfig
PKGCONFIG += x11
CONFIG += link_pkgconfig
PKGCONFIG += gl
CONFIG += link_pkgconfig
PKGCONFIG += glfw3
LIBS += -lXxf86vm -L/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.a
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
问题就在这里:
LIBS += -lXxf86vm -L/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.a
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
您正在使用-L
带有文件名而不是路径的选项!您应该将这四行更改为:
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/
其次,如果顺序很重要,您需要使用LIBS
对于 glfw3,也是这样的:
LIBS += -lglfw3 -lXxf86vm -L/user/lib/x86_64-linux-gnu/
如果需要,不要忘记指定 glfw3 路径。这取决于您的设置。您可能可以尝试交换当前 PKGCONFIG 和 LIBS 语句的顺序,但如果您移动代码,这并不能保证未来的发展。另外,如果可以共享两个库之间的路径,我个人不会使用 PKGCONFIG,而只使用 LIBS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)