PointCloudLibrary Link 使用一体化安装程序的错误和 visual studio 2017

PointCloudLibrary Link errors using All-in-one installer and visual studio 2017

我正在尝试使用这个 PCL 库,并下载了一体化安装程序 (1.8.1-mscv2017-win64)。 添加了 "Include Directories".

的所有目录

将所有相应的库文件夹添加到 "Library Directories"。

已检查系统路径。

但它仍然给我大约 30 Link 个错误,例如以下两个:

LNK2019 unresolved external symbol "void __cdecl pcl::console::print(enum pcl::console::VERBOSITY_LEVEL,char const *,...)" (?print@console@pcl@@YAXW4VERBOSITY_LEVEL@12@PEBDZZ) referenced in function "public: void __cdecl pcl::detail::FieldMapper<struct pcl::PointXYZRGBA>::operator()<struct pcl::fields::rgba>(void)" (??$?RUrgba@fields@pcl@@@?$FieldMapper@UPointXYZRGBA@pcl@@@detail@pcl@@QEAAXXZ)    RealSensewithPCL

LNK2001 unresolved external symbol "public: virtual int __cdecl pcl::PCDReader::readHeader(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct pcl::PCLPointCloud2 &,class Eigen::Matrix<float,4,1,0,4,1> &,class Eigen::Quaternion<float,0> &,int &,int &,unsigned int &,int)" (?readHeader@PCDReader@pcl@@UEAAHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAUPCLPointCloud2@2@AEAV?$Matrix@M[=12=][=12=]A@[=12=]@Eigen@@AEAV?$Quaternion@M[=12=]A@@7@AEAH4AEAIH@Z)

以下是我在 post 中提到的步骤后出现 link 错误问题的更新:

  1. 添加 "Include Directories" 的所有目录。
  2. 将所有相应的库文件夹添加到"Library Directories"。

link 错误 LNK2019 是由缺少依赖项(“.lib”文件)引起的。 添加它们的最佳方法与此 post 中提到的方法相同: In visual studio how to include all .libs in a folder

基本上,转到属性->配置属性->链接器->命令行,将所有“.lib”文件的路径添加到"Additional Options"。

确保只为当前配置(调试或发布)添加正确的 .lib 文件。对于 "Debug" 模式,您需要在文件名中添加带有 "gd" 或 "debug" 的 .lib 文件。否则,您可能会遇到与此类似的新 link 错误 (LNK2038):

LNK2038 mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in cloud_viewer.obj        

这是我在命令行中输入的内容(所有路径由 space 分隔):

"C:\Program Files\PCL 1.8.1rdParty\VTK\lib\*gd.lib" "C:\Program Files\PCL 1.8.1rdParty\Boost\lib\*gd-1_64.lib" "C:\Program Files\PCL 1.8.1rdParty\FLANN\lib\*gd.lib" "C:\Program Files\PCL 1.8.1\lib\*_debug.lib"

希望这个答案可以让您从设置和开始滚动的麻烦中解脱出来!