1

一周以来,我一直对这个错误感到困惑,但我没有任何解决方案......

Linux - Qt 创建者 5.2

我正在尝试在使用 Oculus Rift 库的 Qt 上制作程序,但尽管有可能在 Qt 创建者上链接库,但不幸的是,我总是发现同样的错误。

我已经尝试了 3 种不同的方法来实现它,你可以在这里看到:

-直接链接到路径(方式 2)

-使用 QtCreator 静态编译库并将输出链接到我的项目(方式 1)

- Qt Creator -> Project(右键)-> Add Library -> Path to the Lib(方式3)

这是我的 .pro 文件

QT       += core
QT       -= gui
TARGET = TestOVR3
CONFIG   += console
CONFIG   -= app_bundle
CONFIG += link_pkgconfig
PKGCONFIG += opencv
PKGCONFIG += x11
TEMPLATE = app

# Input Include
INCLUDEPATH += /home/why/Documents/OculusSDK/LibOVR/Include/

# Input Lib - Way 1
#LIBS+=  -L /home/why/Documents/Test/OVRLib/build-OVRLib-Desktop-Debug -lOVRLib

# Input Lib - Way 2
LIBS += -L /home/why/Documents/OculusSDK/LibOVR/Lib/Linux/Debug/x86_64/libovr.a

SOURCES += main.cpp

HEADERS += \
    Headers.h

# Input Lib - Way 3
#unix:!macx: LIBS += -L$$PWD/../../OculusSDK/LibOVR/Lib/Linux/Debug/x86_64/ -lovr

#INCLUDEPATH += $$PWD/../../OculusSDK/LibOVR/Lib/Linux/Debug/x86_64
#DEPENDPATH += $$PWD/../../OculusSDK/LibOVR/Lib/Linux/Debug/x86_64

#unix:!macx: PRE_TARGETDEPS += $$PWD/../../OculusSDK/LibOVR/Lib/Linux/Debug/x86_64/libovr.a

错误

我没有复制过去的所有内容,但它给了你一个想法。主文件由以下教程中的基本教程组成:https ://developer.oculusvr.com/

main.o: In function `Clear()':

/home/why/Documents/Test/build-TestOVR3-Desktop-Debug/../TestOVR3/main.cpp:49:未定义对OVR::SensorFusion::~SensorFusion()' /home/why/Documents/Test/build-TestOVR3-Desktop-Debug/../TestOVR3/main.cpp:51: undefined reference toOVR::System::Destroy()' main.o 的引用:在函数OVR::Allocator::GetInstance()': /home/why/Documents/Test/build-TestOVR3-Desktop-Debug/../../OculusSDK/LibOVR/Include/../Src/Kernel/OVR_Allocator.h:216: undefined reference toOVR:: Allocator::pInstance' main.o:在函数 `OVR::Log::ConfigureDefaultLog(unsigned int)' 中:/home/why/Documents/Test/build-TestOVR3-Desktop-Debug/../../OculusSDK/ LibOVR/Include/../Src/Kernel/OVR_Log.h:159:未定义的引用

有人有想法吗?:S

Visual Studio 2013 & Qt 插件 VS2013

完全相同的错误:S

4

1 回答 1

0

我相信你的问题源于这条线

LIBS += -L /home/why/Documents/OculusSDK/LibOVR/Lib/Linux/Debug/x86_64/libovr.a

-L(大写)选项指定搜索库的目录。您需要指定目录来查找 libovr.a,而不是静态库本身。然后,您将添加一个 -l 选项,在这种情况下-lovr指定要使用的库。

所以基本上你需要将该行更改为

LIBS += -L /home/why/Documents/OculusSDK/LibOVR/Lib/Linux/Debug/x86_64/

然后在某处添加(因为我不熟悉makefile的格式)

-lovr

可能有点晚了,但我昨天刚遇到这个问题,我想我会发布。

于 2014-07-23T15:45:47.307 回答