使用 cmake 和 openCVV 构建"hollow world"错误:对可视化模块的未定义引用



我的c++源代码:

int main(){
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image = imread(argv[1]);   // Read the file
if(! image.data )                              // Check for invalid input
{
cout <<  "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image );                   // Show our image inside it.
}

这只是测试opencv的简单代码。

CMakeLists.txt :

cmake_minimum_required(VERSION  3.8)
set(PROJECT_NAME testCVCL)
project(${PROJECT_NAME})
find_package(OpenCV 4 REQUIRED) 
include_directories(${OpenCV_INCLUDE_DIR})
add_executable(${PROJECT_NAME} 
test.cc)
target_link_libraries(${PROJECT_NAME} 
${OpenCV_LIBRARIES})

编译很好,但链接有错误:

/usr/bin/ld: /usr/lib/libopencv_viz.so.4.1.1: undefined reference to `typeinfo for vtkWriter'
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.1.1: undefined reference to `vtkPolyData::SetStrips(vtkCellArray*)'
/usr/bin/ld: /usr/lib/libopencv_hdf.so.4.1.1: undefined reference to `H5P_CLS_DATASET_CREATE_ID_g'
....
....
and so on

以上误差几乎由libopencv_vizlibopencv_hdf产生。

我确信这些库存在于"/usr/lib"中。

所以我感到困惑。

安装这些软件包后:

vtk
hdf5
glew

在我的电脑中,现在我可以很好地构建项目。

我没有修改上面的代码。

最新更新