点云库简单示例链接错误

时间:2012-04-26 10:09:21

标签: c++ visual-studio-2010 cmake

我正在尝试从http://pointclouds.org/documentation/tutorials/pcl_visualizer.php运行以下PCL简单查看器示例 我已经使用Cmake和推荐的Cmakelists.txt

成功构建了二叉树

生成后,当我尝试构建它时,我收到以下错误:

error LNK2019: unresolved external symbol "public: void __thiscall pcl::visualization::PCLVisualizer::initCameraParameters(void)" (?initCameraParameters@PCLVisualizer@visualization@pcl@@QAEXXZ) referenced in function "class boost::shared_ptr<class pcl::visualization::PCLVisualizer> __cdecl simpleVis(class boost::shared_ptr<class pcl::PointCloud<struct pcl::PointXYZ> const >)" (?simpleVis@@YA?AV?$shared_ptr@VPCLVisualizer@visualization@pcl@@@boost@@V?$shared_ptr@$$CBV?$PointCloud@UPointXYZ@pcl@@@pcl@@@2@@Z)`

error LNK2019: unresolved external symbol "public: void __thiscall pcl::visualization::PCLVisualizer::addCoordinateSystem(double,int)" (?addCoordinateSystem@PCLVisualizer@visualization@pcl@@QAEXNH@Z) referenced in function "class boost::shared_ptr<class pcl::visualization::PCLVisualizer> __cdecl simpleVis(class boost::shared_ptr<class pcl::PointCloud<struct pcl::PointXYZ> const >)" (?simpleVis@@YA?AV?$shared_ptr@VPCLVisualizer@visualization@pcl@@@boost@@V?$shared_ptr@$$CBV?$PointCloud@UPointXYZ@pcl@@@pcl@@@2@@Z)


error LNK2019: unresolved external symbol "public: bool __thiscall pcl::visualization::PCLVisualizer::setPointCloudRenderingProperties(int,double,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?setPointCloudRenderingProperties@PCLVisualizer@visualization@pcl@@QAE_NHNABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "class boost::shared_ptr<class pcl::visualization::PCLVisualizer> __cdecl simpleVis(class boost::shared_ptr<class pcl::PointCloud<struct pcl::PointXYZ> const >)" (?simpleVis@@YA?AV?$shared_ptr@VPCLVisualizer@visualization@pcl@@@boost@@V?$shared_ptr@$$CBV?$PointCloud@UPointXYZ@pcl@@@pcl@@@2@@Z)

这些只是一些......我在cmakelists.txt中遗漏了什么?

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)

project(pcl_visualizer_viewports)

find_package(PCL 1.5.1 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})

link_directories(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

add_executable (pcl_visualizer_demo pcl_visualizer_demo.cpp)

target_link_libraries (pcl_visualizer_demo ${PCL_LIBRARIES})

感谢任何帮助。感谢

5 个答案:

答案 0 :(得分:4)

发现问题所在:虽然我正在运行64位机器,但我的编译器(VS2010)配置为32位,所以我需要卸载64位Point Cloud Library并安装32位版本。现在它有效。获得的经验教训:D

答案 1 :(得分:0)

您好像没有链接PCL库。这可能是因为在运行CMake时未正确设置${PCL_LIBRARIES}。你可以添加

message("PCL_LIBRARIES - ${PCL_LIBRARIES}")
find_package调用后,

到您的CMakeLists.txt文件中检查值。

如果您使用的是CMake v2.8.8,this bug可能是您遇到问题的原因。请尝试恢复为v2.8.7

答案 2 :(得分:0)

我认为如此复杂可以通过这种方式找到错误。 我已经在我的电脑,Windows 7 64位和VStudio 2010中安装了PCL,样品运行良好。

确保已正确安装了PCL和依赖项。 请查看下载部分here在我的情况下,我下载了“all in one”版本。

按照说明,一步一步,并不是很复杂。

您可以看到“cmake文件”的结构如何here尝试下载最新版本的cmake

最后,在PCL网站here

中运行基本项目

度过愉快的一天

答案 3 :(得分:0)

我也有同样的问题,我通过手动链接pcl_visualization.lib文件解决了。 可以尝试在visual c ++ 2010中执行以下步骤:

  

项目属性 - &gt;链接器 - &gt;输入 - &gt;附加依赖性 - &gt;   添加文件。

在我的情况下,我添加了 G:\ PCL \ PCL 1.6.0 \ lib \ pcl_visualization_release.lib 以及 G:\ PCL \ PCL 1.6.0 \ lib \ pcl_visualization_debug .lib 用于调试。

它对我有用。

答案 4 :(得分:0)

我介绍了here如何在Windows的一个安装程序中全部安装PCL 1.8.1。问题出在哪里,只需确保:

enter image description here