gpt4 book ai didi

c++ - 外部库在 Qt Creator 中抛出 undefined reference 错误

转载 作者:太空狗 更新时间:2023-10-29 11:45:01 25 4
gpt4 key购买 nike

我在使用外部库/SDK 时遇到一些问题。我在 Ubuntu 下使用 Qt Creator 和 Oculus Rift SDK。 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。很显然,只是外部源代码在访问该方法时出现问题。

任何想法我必须对构建过程进行哪些更改才能使其工作?

最佳答案

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

参见 this answer获取更多信息。

关于c++ - 外部库在 Qt Creator 中抛出 undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21095795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com