首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义的对符号'XF86VidModeQueryExtension‘的引用(linux,qt创建者IDE)

问未定义的对符号'XF86VidModeQueryExtension‘的引用(linux,qt创建者IDE)
EN

Stack Overflow用户
提问于 2013-12-31 01:05:55
回答 1查看 6.6K关注 0票数 3

我一直试图获得一些实现GFLW3的简单GL代码,以便在QT上编译(在Ubuntu13.04上)。但是,当它尝试构建时,我总是得到相同的输出:

代码语言:javascript
复制
undefined reference to symbol 'XF86VidModeQueryExtension'

然后我转到.pro文件并链接lXxf86vm.so库文件并添加了-lXxf86vm,但是它仍然提供了相同的输出:

代码语言:javascript
复制
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

正如您所看到的,我尝试了四种不同的方法来链接正确的lib,但是它仍然给了我相同的“未定义引用”和“符号无法读取”错误。对连接的正确方式有什么见解吗?

编辑: Pro文件: TEMPLATE = app

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-31 01:23:13

问题在于:

代码语言:javascript
复制
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选项,而不是路径!您应该将这四行更改为:

代码语言:javascript
复制
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/

其次,如果排序很重要,您也需要将LIBS用于glfw3,如下所示:

代码语言:javascript
复制
LIBS += -lglfw3 -lXxf86vm -L/user/lib/x86_64-linux-gnu/

如果需要,也不要忘记分配glfw3路径。这取决于你的设置。您可能会尝试交换当前PKGCONFIG和LIBS语句的顺序,但如果您移动代码,这并不是未来的证据。另外,如果您可以在两个库之间共享路径,我不会亲自使用PKGCONFIG,只是LIBS。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20850123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档