Я схожу с ума ….
Я работаю над программой для считывания совместных координат с датчика Xtion Primesense с OpenNI и NiTE. Я получил программу splittet в 3 частях. Основной, sensorOpenNI.hpp и sensorOpenNI.cpp. Теперь, связывая части вместе, я получаю много ошибок, говорящих о неопределенных ссылках на некоторые функции NiTE. Я работаю с Kubuntu и G ++. Библиотеки NiTE и OpenNI находятся в каталоге с именем Include …
Вот сообщение об ошибке:
/tmp/ccrPQHEg.o: в функции
openni::VideoFrameRef::release()':
oniFrameRelease»
sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef7releaseEv[openni::VideoFrameRef::release()]+0x18): undefined reference to
/tmp/ccrPQHEg.o: в функцииopenni::VideoFrameRef::_setFrame(OniFrame*)':
oniFrameAddRef»
sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef9_setFrameEP8OniFrame[openni::VideoFrameRef::_setFrame(OniFrame*)]+0x25): undefined reference to
/tmp/ccrPQHEg.o: в функцииnite::UserTrackerFrameRef::release()':
niteUserTrackerFrameRelease»
sensorOpenNI.cpp:(.text._ZN4nite19UserTrackerFrameRef7releaseEv[nite::UserTrackerFrameRef::release()]+0x24): undefined reference to
/tmp/ccrPQHEg.o: в функцииnite::UserTracker::create(openni::Device*)':
niteInitializeUserTracker»
sensorOpenNI.cpp:(.text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x13): undefined reference to
sensorOpenNI.cpp :(. text._ZN4nite11UserTracker6createEPN6openni6DeviceE [nite :: UserTracker :: create (openni :: Device *)] + 0x27): неопределенная ссылка наniteInitializeUserTrackerByDevice'
конечны :: UserTracker :: Destroy () ‘:
/tmp/ccrPQHEg.o: In function
sensorOpenNI.cpp :(. text._ZN4nite11UserTracker7destroyEv [nite :: UserTracker :: destroy ()] + 0x1e): неопределенная ссылка наniteShutdownUserTracker'
конечен :: UserTracker :: readFrame (конечно :: UserTrackerFrameRef *) ‘:
/tmp/ccrPQHEg.o: In function
sensorOpenNI.cpp :(. text._ZN4nite11UserTracker9readFrameEPNS_19UserTrackerFrameRefE [nite :: UserTracker :: readFrame (nite :: UserTrackerFrameRef *)] + 0x1d): неопределенная ссылка наniteReadUserTrackerFrame'
конечны :: UserTracker :: startSkeletonTracking (короткая) ‘:
/tmp/ccrPQHEg.o: In function
sensorOpenNI.cpp :(. text._ZN4nite11UserTracker21startSkeletonTrackingEs [nite :: UserTracker :: startSkeletonTracking (short)] + 0x1e): неопределенная ссылка наniteStartSkeletonTracking'
конечны :: Nite :: Initialize () ‘:
/tmp/ccrPQHEg.o: In function
sensorOpenNI.cpp :(. text._ZN4nite4NiTE10initializeEv [nite :: NiTE :: initialize ()] + 0x7): неопределенная ссылка наniteInitialize'
OpenNI :: VideoFrameRef :: Release () ‘:
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 function
sensorOpenNI.cpp :(. text._ZN6openni13VideoFrameRef7releaseEv [openni :: VideoFrameRef :: release ()] + 0x18): неопределенная ссылка наoniFrameRelease'
OpenNI :: VideoFrameRef :: _ setFrame (OniFrame *) ‘:
sensorOpenNI.o: In function
sensorOpenNI.cpp :(. text._ZN6openni13VideoFrameRef9_setFrameEP8OniFrame [openni :: VideoFrameRef :: _ setFrame (OniFrame *)] + 0x25): неопределенная ссылка наoniFrameAddRef'
конечны :: UserTrackerFrameRef :: Release () ‘:
sensorOpenNI.o: In function
sensorOpenNI.cpp :(. text._ZN4nite19UserTrackerFrameRef7releaseEv [nite :: UserTrackerFrameRef :: release ()] + 0x24): неопределенная ссылка наniteUserTrackerFrameRelease'
конечны :: UserTracker :: создание (OpenNI :: Device *) ‘:
sensorOpenNI.o: In function
sensorOpenNI.cpp :(. text._ZN4nite11UserTracker6createEPN6openni6DeviceE [nite :: UserTracker :: create (openni :: Device *)] + 0x13): неопределенная ссылка наniteInitializeUserTracker'
niteInitializeUserTrackerByDevice»
sensorOpenNI.cpp:(.text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x27): undefined reference to
sensorOpenNI.o: в функцииnite::UserTracker::destroy()':
niteShutdownUserTracker»
sensorOpenNI.cpp:(.text._ZN4nite11UserTracker7destroyEv[nite::UserTracker::destroy()]+0x1e): undefined reference to
sensorOpenNI.o: в функцииnite::UserTracker::readFrame(nite::UserTrackerFrameRef*)':
niteReadUserTrackerFrame»
sensorOpenNI.cpp:(.text._ZN4nite11UserTracker9readFrameEPNS_19UserTrackerFrameRefE[nite::UserTracker::readFrame(nite::UserTrackerFrameRef*)]+0x1d): undefined reference to
sensorOpenNI.o: в функцииnite::UserTracker::startSkeletonTracking(short)':
niteStartSkeletonTracking»
sensorOpenNI.cpp:(.text._ZN4nite11UserTracker21startSkeletonTrackingEs[nite::UserTracker::startSkeletonTracking(short)]+0x1e): undefined reference to
sensorOpenNI.o: в функцииnite::NiTE::initialize()':
niteInitialize»
sensorOpenNI.cpp:(.text._ZN4nite4NiTE10initializeEv[nite::NiTE::initialize()]+0x7): undefined reference to
collect2: ld вернул 1 статус выхода
Я звоню G ++, как это:
g++ -o test mainSensor.cpp sensorOpenNI.cpp -I Include/
Попробуйте скопировать библиотеки 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
Других решений пока нет …