2013-05-09 130 views
2

我一直試圖在PCL網站上運行一個點雲庫示例(http://pointclouds.org/documentation/tutorials/using_pcl_pcl_config.php#using-pcl-pcl-config),並且仍然無法運行!如何構建PCL項目

這就是我所做的:我已經在我的電腦中安裝了MSVS 2010(64位)的Point Cloud library PCL 1.6.0多功能安裝程序,然後安裝了一些我發現我需要的庫( Boost和Eigen)。之後,我添加了MS Visual Studio 2010(PLC,boost和eigen)中所需的所有依賴項和庫,並且仍然會出現這些令人討厭的錯誤:

(我也嘗試過使用CMake GUI for windows,但它錯誤LNK2019:無法解析的外部符號「無效__cdecl PCL ::控制檯::打印(PCL枚舉::控制檯:: VERBOSITY_LEVEL,字符常量生成項目)

1> PCL.obj時報告了很多錯誤的*:...)「(?print @ console @ pcl @@ YAXW4VERBOSITY_LEVEL @ 12 @ PBDZZ)在函數_main中引用

1> PCL.obj:錯誤LNK2001:無法解析的外部符號」public:virtual int __thiscall pcl: :P CDReader :: readHeader(類的std :: basic_string的,類的std ::分配器>常量&,結構sensor_msgs :: PointCloud2 &,類徵::矩陣&,類徵::四元數&,整數&,整數&,無符號整型& ,int)「(?readHeader @ PCDReader @ pcl @@ UAEHABV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ AAUPointCloud2 @ sensor_msgs @@ AAV?$ Matrix @ M $ 03 $ 00 $ 0A @ $ 03 $ 00 @ Eigen @@ AAV?$ Quaternion @ M $ 0A @@ 8 @ AAH4AAIH @ Z)

1> PCL.obj:error LNK2001:無法解析的外部符號「public:virtual int __thiscall pcl :: PCDReader :: read(class std :: basic_string,class std :: allocator> const &,struct sensor_msgs :: PointCloud2 &,class Eigen :: Matrix &,class Eigen :: Quaternion &,int &,int)「(?read @ PCDReader @ pcl @@ UAEHABV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ STD @@ AAUPointCloud2 @ sensor_msgs @@ AAV?$基質@ M $ 03 $ $ 00 0A @ $ 03 $ 00 @艾根@@ AAV?$ @四元數M $ 0A @@ 8 @啊哈@ Z)

任何,任何幫助將非常感激。這東西讓我如此多的時間,讓我發瘋。

謝謝!!

+0

爲什麼你安裝了Boost和Eigen,因爲一體化安裝程序已經包含了它們? – Sassa 2013-05-10 14:33:44

+0

在那個嘗試中,我剛剛安裝了PCL(沒有第三方的東西),然後我安裝了示例代碼所需的庫。我也嘗試安裝完整的PCL +第三方軟件包,仍然收到相同的錯誤.... – Nicolai 2013-05-10 15:23:34

回答

2

你有一個鏈接器錯誤,所以你缺少一個lib文件或者你沒有鏈接它們。或者你正在混合32位和64位配置和庫。

您是否完成了我在this answer中描述的所有步驟?

我建議使用all-in-one安裝程序,除非您真的知道PCL需要第三方庫的方式和原因。

+0

謝謝!我錯過了在鏈接器中添加額外的依賴關係。但是,最簡單的pcd_write.cpp正在運行,但由於VTK未解決的符號故障,pcl_visualizer_demo.cpp失敗。我在VC++目錄中添加了include和庫目錄的路徑。我必須在Linker-Input-Additional Dependencies中添加每個.lib VTK文件嗎?在VTK庫文件夾中有100個.lib文件! – Nicolai 2013-05-27 10:15:57

+0

不,從技術上說,你只需要添加你正在使用的那些 - 有人說,有時很難找出你需要哪些,所以更容易添加所有這些:) (你可以排除顯然不需要的例如與數據庫(sql,mapreduce)或圖像格式(tiff/jpeg/dicom)相關的並添加所有其餘的) – Oszkar 2013-06-02 19:49:33