1

我正在发疯……我正在开发一个程序,以从带有 OpenNI 和 NiTE 的 Xtion Primesense 传感器读取关节坐标。我把程序分成 3 个部分。主要,sensorOpenNI.hpp 和 sensorOpenNI.cpp。现在,在将这些部分链接在一起时,我收到很多错误,说对某些 NiTE 函数有未定义的引用。我正在使用 Kubuntu 和 g++。NiTE 和 OpenNI 库位于名为 Include 的目录中...这是错误消息:

/tmp/ccrPQHEg.o: 在函数openni::VideoFrameRef::release()': sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef7releaseEv[openni::VideoFrameRef::release()]+0x18): undefined reference tooniFrameRelease' /tmp/ccrPQHEg.o: 在函数openni::VideoFrameRef::_setFrame(OniFrame*)': sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef9_setFrameEP8OniFrame[openni::VideoFrameRef::_setFrame(OniFrame*)]+0x25): undefined reference tooniFrameAddRef' /tmp/ccrPQHEg.o: 在函数nite::UserTrackerFrameRef::release()': sensorOpenNI.cpp:(.text._ZN4nite19UserTrackerFrameRef7releaseEv[nite::UserTrackerFrameRef::release()]+0x24): undefined reference toniteUserTrackerFrameRelease' /tmp/ccrPQHEg.o: 在函数nite::UserTracker::create(openni::Device*)': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x13): undefined reference toniteInitializeUserTracker'sensorOpenNI.cpp:(。 text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x27):未定义对niteInitializeUserTrackerByDevice' /tmp/ccrPQHEg.o: In functionnite::UserTracker::destroy()' 的引用:sensorOpenNI.cpp:(.text._ZN4nite11UserTracker7destroyEv[nite:: UserTracker::destroy()]+0x1e): 未定义对niteShutdownUserTracker' /tmp/ccrPQHEg.o: In functionnite::UserTracker::readFrame(nite::UserTrackerFrameRef*)' 的引用:sensorOpenNI.cpp:(.text._ZN4nite11UserTracker9readFrameEPNS_19UserTrackerFrameRefE[nite::UserTracker::readFrame(nite: :UserTrackerFrameRef*)]+0x1d): 未定义的引用niteReadUserTrackerFrame' /tmp/ccrPQHEg.o: In functionnite::UserTracker::startSkeletonTracking(short)': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker21startSkeletonTrackingEs[nite::UserTracker::startSkeletonTracking(short)]+0x1e): 未定义对niteStartSkeletonTracking' /tmp/ccrPQHEg.o: In functionnite::NiTE::initialize()' 的引用: sensorOpenNI.cpp:(.text._ZN4nite4NiTE10initializeEv[nite::NiTE::initialize()]+0x7): 未定义对niteInitialize' collect2: ld returned 1 exit status patrick@ubuntu:~/Koerpersteuerung$ g++ -c sensorOpenNI.cpp sensorOpenNI.hpp -I Include/ patrick@ubuntu:~/Koerpersteuerung$ g++ mainSensor.cpp sensorOpenNI.o -I Include/ sensorOpenNI.o: In functionopenni::VideoFrameRef::release()' 的引用:sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef7releaseEv[openni ::VideoFrameRef::release()]+0x18): 未定义对oniFrameRelease' sensorOpenNI.o: In functionopenni::VideoFrameRef::_setFrame(OniFrame*)' 的引用:sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef9_setFrameEP8OniFrame[openni::VideoFrameRef::_setFrame(OniFrame*) ]+0x25): 未定义的引用oniFrameAddRef' sensorOpenNI.o: In functionnite::UserTrackerFrameRef::release()': sensorOpenNI.cpp:(.text._ZN4nite19UserTrackerFrameRef7releaseEv[nite::UserTrackerFrameRef::release()]+0x24): 未定义引用niteUserTrackerFrameRelease' sensorOpenNI.o: In functionnite::UserTracker::create(openni::Device *)':sensorOpenNI.cpp:(.text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x13):未定义对niteInitializeUserTracker' sensorOpenNI.cpp:(.text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x27): undefined reference toniteInitializeUserTrackerByDevice'sensorOpenNI.o 的引用:在函数nite::UserTracker::destroy()': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker7destroyEv[nite::UserTracker::destroy()]+0x1e): undefined reference toniteShutdownUserTracker'sensorOpenNI.o 中:在函数nite::UserTracker::readFrame(nite::UserTrackerFrameRef*)': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker9readFrameEPNS_19UserTrackerFrameRefE[nite::UserTracker::readFrame(nite::UserTrackerFrameRef*)]+0x1d): undefined reference toniteReadUserTrackerFrame'sensorOpenNI.o:在函数nite::UserTracker::startSkeletonTracking(short)': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker21startSkeletonTrackingEs[nite::UserTracker::startSkeletonTracking(short)]+0x1e): undefined reference toniteStartSkeletonTracking'sensorOpenNI.o:在函数nite::NiTE::initialize()': sensorOpenNI.cpp:(.text._ZN4nite4NiTE10initializeEv[nite::NiTE::initialize()]+0x7): undefined reference toniteInitialize'collect2:ld 返回 1 退出状态

我这样调用 g++:

g++ -o test mainSensor.cpp sensorOpenNI.cpp -I Include/
4

1 回答 1

0

尝试像这样复制库 libOpenNI2.so 和 libNiTE2:

sudo cp ./OpenNI-Linux-x86-2.2/Redist/libOpenNI2.so /usr/local/lib 
sudo cp ./NiTE-Linux-x86-2.2/Redist/libNiTE2.so /usr/local/lib

然后执行 sudo ldconfig 现在通过添加 -lOpenNI2 -lNiTE2 来编译程序

于 2016-07-26T21:31:45.650 回答