【问题标题】:PCL 1.8.1 Visual Studio 2017 FLANN LNK2019 Linker error buildPCL 1.8.1 Visual Studio 2017 FLANN LNK2019 链接器错误构建
【发布时间】:2018-11-29 23:21:54
【问题描述】:

我正在尝试在 Visual Studio 2017 中从 https://github.com/PointCloudLibrary/pcl/releases 设置 PCL 1.8.1 库。

在我的包含目录中,我有:

C:\Program Files (x86)\OpenNI2\Include
C:\Program Files (x86)\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0
C:\Program Files (x86)\PCL 1.9.1\3rdParty\Qhull\include
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\include
C:\Program Files (x86)\PCL 1.8.1\3rdParty\Eigen\eigen3
C:\Program Files (x86)\PCL 1.8.1\3rdParty\Boost\include\boost-1_64
C:\Program Files (x86)\PCL 1.8.1\include\pcl-1.8

图书馆目录:

C:\Program Files (x86)\PCL 1.8.1\3rdParty\VTK\lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\Qhull\lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\Boost\lib
C:\Program Files (x86)\PCL 1.8.1\lib
C:\Program Files (x86)\OpenNI2\Lib

我认为这一切都是正确的。我能够构建和运行像http://pointclouds.org/documentation/tutorials/writing_pcd.php#writing-pcd 这样的简单示例。我的主要需要是使用 Fdtrees 和 Octrees,但是当我尝试编译这个示例 http://pointclouds.org/documentation/tutorials/kdtree_search.php#kdtree-search 时,我得到了 LNK2019 错误: LNK2019 errors screenshot

如您所见,这一切都与 FLANN 库有关。我发现即使我从包含库中删除 C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib ,也会发生相同的错误。我没有正确包含库吗?

还有这篇文章:Setting up Point Cloud Library with Visual Studio 提到在链接器/输入/附加依赖项中添加 .libs。我也试过这样做:

C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann.lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann_cpp.lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann_cpp_s.lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann_cpp_s-gd.lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann_cpp-gd.lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann_s.lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann_s-gd.lib
C:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib\flann-gd.lib

也没有完整的路径,但仍然没有成功......

我真的在努力完成这项工作,并且还了解在 Visual Studio / C++ 中包含外部内容的整个过程。我对此很陌生,这绝对是一个比 Python 的“pip install xyz,import xyz”更复杂的过程......我讨厌某些东西对我来说是一个黑匣子,并且真的很想解决这个问题。

对不起,如果这篇文章太长,但我想提供每一个细节。谢谢你的任何回答。

【问题讨论】:

  • 您可以从“输出”选项卡中复制并粘贴错误消息的文本。这比错误列表格式更好。
  • 您添加了不必要的库。另外我怀疑你必须在调试和发布之间有不同的库。并确保二进制文件是使用您的编译器或 VS2015 构建的。来自任何其他编译器(包括旧版本的 Visual Studio)的二进制文件将不兼容。
  • 您好,谢谢。非常感谢您的回答!二进制文件是指 .lib 或 .dll 文件?因为在主 PCL 库文件夹和 3rd 方库中的“bin”文件夹中也有一些 .dll。我不确定如何处理这些(我现在根本没有使用它们)
  • 我的意思是.lib。我不相信flann_cpp.libflann_cpp_s.libflann_cpp-gd.lib 应该同时使用。 _s 和 _gd 用于不同的 CRT。
  • _s = 静态发布库 _s_gd = 静态调试库。没有 _s 意味着使用 dll。 _gd 表示调试。

标签: c++ visual-studio include linker-errors point-cloud-library


【解决方案1】:

我实际上设法解决了这个问题!问题是我没有连接“pcl_kdtree_debug.lib”,毕竟 FLANN 库的包含是可以的。从链接器错误来看,它只是非常不清楚它实际需要什么。我是在将完全不同的库用于具有类似问题的不同事物时发现的。

谢谢drescherjm!你在其中扮演了你的角色。

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    相关资源
    最近更新 更多