天天看點

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

1、準備

1、環境:

windows系統(本文win10)、vs2013、檢視自己電腦位數(請挪步百度)

pcl 1.8.0 win32+win64版本:

https://pan.baidu.com/s/1TYIXcWeRFiShK5Bhwx-EoQ 提取碼:owig

說明:版本關于pcl的版本與VS201X的版本之間的聯系,見此文

https://www.cnblogs.com/haoyul/p/6691088.html

2、開始配置

關于配置win64版本,推薦此文,很詳細:

PCL1.8.0+VS2013+Win10 配置

補充:

項目屬性----通用屬性----C/C++ ----預處理器----加上以下兩句,不然會報錯

_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS
           
win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

如果已經按上述文章内的方法配置成功,下文可不看。

如果失敗,請看下文

如果系統是32位,請看下文

3、配置win32版本

這裡主要針對按照上述文章過程配置失敗和遇到小問題的朋友。

1、問題1,提示沒有找到xxx.dll

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

解決方法:檢查系統環境變量或者項目屬性裡面的環境目錄配置是否正确,點此處看關于環境變量和項目裡的環境目錄說明。

2、編譯通過,但是運作失敗

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完
win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

問題原因:安裝的pcl 1.8.0 win64内的dll檔案用于64位平台時出錯,相關類型的文章:

https://blog.csdn.net/edd1e/article/details/44918719

https://blog.csdn.net/wu_nan_nan/article/details/50216475

https://blog.csdn.net/weixin_30511107/article/details/95549885

點此檢視問題驗證

解決方法:配置32位的版本

3、win32版本配置

如果是64位版本配置失敗的朋友,請先執行以下步驟:

打開win32版本安裝檔案進行安裝,方法和上述推薦安裝64位版本的文章一緻,但安裝路徑不要和之前64位一樣(這裡為了驗證一些問題,沒有對64位版本進行解除安裝)。

在環境變量配置這一步,做一些更改:

紅框裡是安裝32版本後新增的

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

但是會發現PCL_ROOT這個變量路徑已經變成win32的安裝路徑了,把它的路徑重新改成之前win64的安裝路徑。點選建立一個,變量名為PCL_ROOT_WIN32,變量值為win32安裝路徑,如下:

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

再看系統變量裡的Path,點選編輯,在之前win64配置過的路徑上加個1(故意不讓系統找到win64的正确路徑),修改後如下所示:

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完
win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

上述并沒有删除之前win64配置的環境變量,後面有關于環境變量的說明

(如果先建立了項目再改的環境變量,那麼得重新開機VS,不然更改的環境變量不會生效)

接着打開vs2013按推薦文章内建立項目,跳過建立x64平台的步驟,直接在Debug|win32這裡建立項目屬性表

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

然後按推薦文章内方法添加庫目錄,包含目錄,依賴項,隻不過路徑要選成後面的win32安裝目錄下的。

環境目錄配置這一步跳過。

加入給出的測試源碼。

編譯運作,可能會出現無法打開“pcl_apps_debug.lib”和“pcl_simulation_debug.lib”

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完
win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

這時打開win32版本安裝目錄下的lib檔案夾,會發現是沒有這兩個.lib檔案的,而再打開win64目錄下的lib檔案夾,就有這兩個檔案,将它倆複制到win32裡的lib檔案夾,再次編譯運作。成了

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題

說明:.lib是資源描述檔案,描述.dll檔案,詳細可挪步百度

1、依賴項、庫目錄

本人的膚淺了解:屬性表裡面添加的依賴項就是告訴vs2013老闆我需要用這些.lib檔案,添加庫目錄就是告訴vs2013去這些地方找我要的.lib檔案

2、環境變量

要用.lib檔案,就得有.dll檔案。我們之前加的環境變量,是讓系統在這些目錄下找我們要用的.dll檔案,這就是為什麼剛才要在win64的環境變量路徑後面加1讓系統找不到了,因為我們要找的是win32的.dll檔案,如果用了win64的,那就會因為dll版本問題而出錯。

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

如果沒有配置環境變量,那麼在項目屬性裡面加上也是同樣的效果,不過在系統裡面配置好了後就不用每個項目都去添加一遍了

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

環境變量實驗:

在已經成功運作的情況下,退出vs。

再次更改環境變量,去掉64位路徑後面的1,在32位後面加1

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

完成後,再次打開vs,打開剛才的項目,再次運作,死掉了(看看項目裡屬性–配置屬性–調試–環境這裡有沒有加上正确的路徑,有的話還是會正常運作,删掉再次運作就能看到會死掉)。

這就說明了win32和win64版本要使用各自的dll檔案,這裡就是因為環境變量裡找到了64位的路徑,而32位的後面加了1,是以沒找到,這時候使用的就是64位的dll,那麼死掉就很正常了:

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完
win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

3、包含目錄

包含目錄是要用到頭檔案時(#include"xxx.h"),告訴vs2013在這裡面去找

4、dll版本問題實驗驗證

做了一個實驗,自己編寫動态庫用于被調用,分别用win32和x64生成mydlltest.dll以及mydlltest.lib檔案

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完
win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

建立一個項目來調用dll(将32位下的mydlltest.dll以及mydlltest.lib複制進項目檔案夾),建立的項目用32位編譯,正常運作。

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

此時将64位的mydlltest.dll替換掉32位下的mydlltest.dll,結果跟配置pcl1.8.0win64版本的情況一樣

win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完
win10+vs2013配置pcl 1.8.01、準備2、開始配置3、配置win32版本4、關于依賴項、庫目錄、環境變量、包含目錄、dll版本問題完

花了兩三天時間才把pcl配置好,是以

小白一個,邊學邊用,如有錯漏,敬請指正

參考:

文中已列出

--------------------------------------------------------------------------------------------諾有缸的高飛鳥202005

繼續閱讀