VS2015+PCL1.8.0 安裝注意事項:包含目錄,附加依賴項與預處理器

本人安裝過程中主要問題出現在:鏈接庫>附加依賴項與預處理器

一、包含目錄

 應查看自己的安裝目錄,不能盲目完全照搬網上教程,include後需再寫一級

二、附加依賴項

由於pcl中.lib 較多,且網上教程複製黏貼的.lib極有可能不同,所以給出快速提取.lib的方法:

引用自:http://www.cnblogs.com/blog-vincent-0x1F7/p/9646358.html

各個庫目錄中的所有.lib文件就是我們的附加依賴項,但是這裏要把他們區分爲debug模式下的依賴項和release模式下的依賴項,而且.lib文件數量繁多,自己複製這些文件名還要分成debug、release兩撥確實太多了。我們可以用批處理命令來幫我們執行。

觀察各個庫目錄可知調試模式和發行模式的分別,在%PCL_ROOT%\lib下的.lib文件加了debug和release來區分,%PCL_ROOT%\3rdParty\Boost\lib下的以有gd的爲debug模式否則爲release模式,其他各個庫目錄也都有類似規律,所以可以在各個庫目錄下寫批處理文件導出.lib依賴項:

1.在%PCL_ROOT%\lib下新建文本文檔,改後綴名爲.bat,筆記本打開編輯如下內容:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt      //解釋:對每一個(*.lib)通配符匹配到的文件名I,顯示I到文件all.txt,之後的語句類似理解就可
for %%I in (*debug.lib) do echo %%I>>adebug.txt
for %%I in (*release.lib) do echo %%I>>arelease.txt
pause

則會生成adebug.txt保存debug模式下的依賴項、arelease.txt保存release模式下的依賴項、all.txt保存所有依賴項,如下:

2.在%PCL_ROOT%\3rdParty\Boost\lib下編寫:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*mt-gd-1_64.lib) do echo %%I>>adebug.txt
for %%I in (*mt-1_64.lib) do echo %%I>>arelease.txt
pause

3.

在%PCL_ROOT%\3rdParty\OpenNI2\Lib下只有一個不必用批處理,自己抄一下名稱就好;在%PCL_ROOT%\3rdParty\FLANN\lib和%PCL_ROOT%\3rdParty\Qhull\lib下因爲不太多故將所有.lib導出到一個all.txt文件然後自己根據有沒有_d區分debug和release版本:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt
pause

4.在%PCL_ROOT%\3rdParty\VTK\lib下根據有無-gd區分debug和release,編寫bat文件如下:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*8.0.lib) do echo %%I>>arelease.txt
for %%I in (*c++.lib) do echo %%I>>arelease.txt
for %%I in (*-gd.lib) do echo %%I>>adebug.txt
pause

最後把所有debug模式下依賴項彙總,把所有release模式下的依賴項彙總即得到設置中所需要的依賴項。另外如果想更簡單一點可以把以上的輸出文件名改爲同一個,這樣可以所有debug的輸出到一個debug.txt,所有release的輸出到一個release.txt,不過要注意的是文件名要使用絕對路徑。

三、預處理器

運行一個測試程序很有可能會拋出error c4996錯誤,

只需在項目-屬性-C/C++-預處理器-預處理器定義中添加_SCL_SECURE_NO_WARNINGS就可以。

四、例程:顯示兔子點雲

點雲下載鏈接:https://pan.baidu.com/s/15LZVm2Kb-tKb1CVofoLSZA    提取碼:s03u

#include<pcl/visualization/cloud_viewer.h>
#include<iostream>//標準C++庫中的輸入輸出類相關頭文件。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 讀寫類相關的頭文件。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //PCL中支持的點類型頭文件。
int user_data;
using namespace std;
int viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
	viewer.setBackgroundColor(1.0, 0.5, 1.0);   //設置背景顏色
	return 0;
}

int main()
{
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	char strfilepath[256] = "rabbit.pcd";
	pcl::io::loadPCDFile(strfilepath, *cloud);
	pcl::visualization::CloudViewer viewer("Cloud Viewer");     //創建viewer對象	
	viewer.showCloud(cloud);
	viewer.runOnVisualizationThreadOnce(viewerOneOff);
	system("pause");
	return 0;
}

                                //======================高興========================//

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章