OpenNI链接错误,很多未定义的引用
OpenNI linking erros, lots of undefined references
我快疯了....我正在研究一个程序,从Xtion Primesense传感器与OpenNI和NiTE读出关节坐标。我把节目分成了三部分。主要,sensorOpenNI.hpp和sensorOpenNI.cpp。现在,当把这些部分连接在一起时,我得到了很多错误,说对一些NiTE函数有未定义的引用。我正在使用Kubuntu和g++。NiTE和OpenNI库位于一个名为Include的目录中。下面是错误信息:
/tmp/ccrPQHEg。0:函数
openni::VideoFrameRef::release()': sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef7releaseEv[openni::VideoFrameRef::release()]+0x18): undefined reference to
oniframerrelease '/tmp/ccrPQHEg。0:在函数openni::VideoFrameRef::_setFrame(OniFrame*)': sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef9_setFrameEP8OniFrame[openni::VideoFrameRef::_setFrame(OniFrame*)]+0x25): undefined reference to
oniFrameAddRef'中/tmp/ccrPQHEg。0:函数nite::UserTrackerFrameRef::release()': sensorOpenNI.cpp:(.text._ZN4nite19UserTrackerFrameRef7releaseEv[nite::UserTrackerFrameRef::release()]+0x24): undefined reference to
niteusertrackerframerrelease '/tmp/ccrPQHEg。0:函数nite::UserTracker::create(openni::Device*)': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x13): undefined reference to
niteInitializeUserTrackersensorOpenNI.cpp:(.text._ZN4nite11UserTracker6createEPN6openni6DeviceE[nite::UserTracker::create(openni::Device*)]+0x27):对niteInitializeUserTrackerByDevice' /tmp/ccrPQHEg.o: In function
的未定义引用nite::UserTracker::destroy()':sensorOpenNI.cpp:(.text._ZN4nite11UserTracker7destroyEv[nite::UserTracker::destroy()]+0x1e):对niteShutdownUserTracker' /tmp/ccrPQHEg.o: In function
的未定义引用nite::UserTracker::readFrame(nite::UserTrackerFrameRef*)':sensorOpenNI.cpp:(.text._ZN4nite11UserTracker9readFrameEPNS_19UserTrackerFrameRefE[nite::UserTracker::readFrame(nite::UserTrackerFrameRef*)]+0x1d):对niteReadUserTrackerFrame' /tmp/ccrPQHEg.o: In function
的未定义引用nite::UserTracker::startSkeletonTracking(short)':sensorOpenNI.cpp:(.text. _zn4nite11usertracker21startskeleton trackings [nite::UserTracker::startSkeletonTracking(short)]+0x1e):对niteStartSkeletonTracking' /tmp/ccrPQHEg.o: In function
的未定义引用nite:: 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 function
的未定义引用openni::VideoFrameRef::release()':sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef7releaseEv[openni::VideoFrameRef::release()]+0x18):未定义的oniFrameRelease' sensorOpenNI.o: In function
引用openni::VideoFrameRef::_setFrame(OniFrame*)':sensorOpenNI.cpp:(.text._ZN6openni13VideoFrameRef9_setFrameEP8OniFrame[openni::VideoFrameRef::_setFrame(OniFrame*)]+0x25):对oniFrameAddRef' sensorOpenNI.o: In function
的未定义引用nite::UserTrackerFrameRef::release()':sensorOpenNI.cpp:(.text._ZN4nite19UserTrackerFrameRef7releaseEv[nite::UserTrackerFrameRef::release()]+0x24):对niteUserTrackerFrameRelease' sensorOpenNI.o: In function
的未定义引用nite::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 to
的未定义引用niteInitializeUserTrackerByDevice'sensorOpenNI。0:在函数nite::UserTracker::destroy()': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker7destroyEv[nite::UserTracker::destroy()]+0x1e): undefined reference to
中niteShutdownUserTracker'sensorOpenNI。0:在函数nite::UserTracker::readFrame(nite::UserTrackerFrameRef*)': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker9readFrameEPNS_19UserTrackerFrameRefE[nite::UserTracker::readFrame(nite::UserTrackerFrameRef*)]+0x1d): undefined reference to
中niteReadUserTrackerFrame'sensorOpenNI。0:在功能nite::UserTracker::startSkeletonTracking(short)': sensorOpenNI.cpp:(.text._ZN4nite11UserTracker21startSkeletonTrackingEs[nite::UserTracker::startSkeletonTracking(short)]+0x1e): undefined reference to
nitestartskeletal tracking 'sensorOpenNI。0:函数nite::NiTE::initialize()': sensorOpenNI.cpp:(.text._ZN4nite4NiTE10initializeEv[nite::NiTE::initialize()]+0x7): undefined reference to
niteInitializeCollect2: 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
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用