繁体   English   中英

外部库在Qt Creator中引发未定义的参考错误

[英]External library throws undefined reference errors in Qt Creator

我在使用外部库/ SDK时遇到一些问题。 我正在Ubuntu和Oculus Rift SDK下使用Qt Creator。 Oculus Rift SDK由平台相关的lib文件和一些c ++源代码组成。 请注意,我非常怀疑我的问题在任何方面都与Oculus SDK或Xinerama有关。

我使用向导并将SDK添加为外部库。 结果是:

unix:!macx: LIBS += -L$$PWD/../OculusSDK/LibOVR/Lib/Linux/Release/x86_64/ -lovr
INCLUDEPATH += $$PWD/../OculusSDK/LibOVR/Include
DEPENDPATH += $$PWD/../OculusSDK/LibOVR/Include
unix:!macx: PRE_TARGETDEPS += $$PWD/../OculusSDK/LibOVR/Lib/Linux/Release/x86_64/libovr.a

现在,我应该可以从SDK调用方法了。 但是,这是我在编译时遇到的错误之一:

/home/me/OculusSDK/LibOVR/Lib/Linux/Release/x86_64/libovr.a(OVR_Linux_HMDDevice.o):-1: In function `OVR::Linux::HMDDeviceFactory::EnumerateDevices(OVR::DeviceFactory::EnumerateVisitor&)':
OVR_Linux_HMDDevice.cpp:-1: error: undefined reference to `XineramaIsActive'

我已经尝试过将这行添加到我的.pro文件中,但没有任何改变:

unix:LIBS += -lXinerama

如果我包含与OVR_Linux_HMDDevice.cpp相同的头文件,

#include <X11/extensions/Xinerama.h>

我可以从我的代码成功调用XineramaIsActive。 因此,显然,只有外部源代码才能访问该方法。

有什么想法我必须对构建过程进行哪些更改才能使其正常工作?

链接顺序在这里很重要。 您需要确保在-lXinerama选项之后添加了-lovr选项。 当您将库添加到.pro文件中时,qmake应该保留它们的顺序。

有关更多信息,请参见此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM