跳转至

构建 Open3D 官方 Azure Kinect 示例时找不到 AzureKinect*** 的解决方法

Azure Kinect with Open3D

此文章旨在帮助解决 C++ 版 Open3D 编译时找不到 AzureKinect 相关函数的问题。

问题描述

在尝试构建官方Azure Kinect示例时(AzureKinectViewer.cppAzureKinectMKVReader.cppAzureKinectRecord.cpp)报错:

[1/1] Linking CXX executable AzureKinectViewer
FAILED: AzureKinectViewer 
: && /usr/bin/c++   CMakeFiles/AzureKinectViewer.dir/AzureKinectViewer.cpp.o -o AzureKinectViewer -L/usr/local/lib   -L/usr/local/cuda/lib64 -Wl,-rpath,/usr/local/lib:/usr/local/cuda/lib64  /usr/lib/aarch64-linux-gnu/libk4a.so.1.4.1  /usr/local/lib/libOpen3D.so && :
CMakeFiles/AzureKinectViewer.dir/AzureKinectViewer.cpp.o: In function `main':
AzureKinectViewer.cpp:(.text+0x4fc): undefined reference to `open3d::io::AzureKinectSensor::ListDevices()'
AzureKinectViewer.cpp:(.text+0x50c): undefined reference to `open3d::io::AzureKinectSensorConfig::AzureKinectSensorConfig()'
AzureKinectViewer.cpp:(.text+0x75c): undefined reference to `open3d::io::AzureKinectSensor::AzureKinectSensor(open3d::io::AzureKinectSensorConfig const&)'
AzureKinectViewer.cpp:(.text+0x76c): undefined reference to `open3d::io::AzureKinectSensor::Connect(unsigned long)'
AzureKinectViewer.cpp:(.text+0x84c): undefined reference to `open3d::io::AzureKinectSensor::CaptureFrame(bool) const'
AzureKinectViewer.cpp:(.text+0x93c): undefined reference to `open3d::io::AzureKinectSensor::~AzureKinectSensor()'
AzureKinectViewer.cpp:(.text+0xb2c): undefined reference to `open3d::io::AzureKinectSensor::~AzureKinectSensor()'
CMakeFiles/AzureKinectViewer.dir/AzureKinectViewer.cpp.o: In function `open3d::io::AzureKinectSensorConfig::~AzureKinectSensorConfig()':
AzureKinectViewer.cpp:(.text._ZN6open3d2io23AzureKinectSensorConfigD2Ev[_ZN6open3d2io23AzureKinectSensorConfigD5Ev]+0xc): undefined reference to `vtable for open3d::io::AzureKinectSensorConfig'
AzureKinectViewer.cpp:(.text._ZN6open3d2io23AzureKinectSensorConfigD2Ev[_ZN6open3d2io23AzureKinectSensorConfigD5Ev]+0x10): undefined reference to `vtable for open3d::io::AzureKinectSensorConfig'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

这是因为安装Open3D时未开启Azure Kinect的支持选项。

解决方法

重新安装Open3D。找到Open3D源码文件夹,执行以下命令:

cd build

开启Azure Kinect支持的构建选项:

sudo cmake -DBUILD_AZURE_KINECT=ON ..

编译安装:

sudo make
sudo make install