cmake編譯zlib出錯
❶ 如何用pcl配置visual studio 2010
1.首先下載windows的安裝包。我用的是預編譯版本的多合一包,需要自己編譯的也可以。注意下載時要看清楚vs2010的版本是32位還是64位,不然一些庫會找不到對應入口,導致編譯不通過的。
tips:可以在開始菜單下的Microsoft Visual Studio 2010文件夾下,查看Microsoft Windows SDK Tools,如果看到程序後面(如IL反匯編程序)有(x64)字樣,則vs是64位的,沒有就放心安裝32位版本吧。
如果是用cmake生成pcl解決方案,要注意在cmake的時候確定各個依賴庫的路徑,可以在對應項上把滑鼠停留一下,看看有什麼提示信息,特別是VTK的目錄。有些時候能夠繼續生成,但是部分模塊並沒有設置好參數,會導致編譯出來的PCL運行不良好。
2.安裝完畢後就測試一下PCL的效果吧,要注意項目對應的包含目錄、庫目錄、庫文件(LIB)和運行環境(DLL)。
用http://www.pointclouds.org/documentation/tutorials/pcl_visualizer.php#pcl-visualizer上面的常式試一試,新建工程,粘貼代碼……
在包含目錄下添加:
C:\Program Files\PCL 1.5.1\3rdParty\Boost\include;
C:\Program Files\PCL 1.5.1\3rdParty\Eigen\include;
C:\Program Files\PCL 1.5.1\3rdParty\Flann\include;
C:\Program Files\PCL 1.5.1\3rdParty\Qhull\include;
C:\Program Files\PCL 1.5.1\3rdParty\VTK\include\vtk-5.8;
C:\Program Files\OpenNI\Include;
C:\Program Files\PCL 1.5.1\include\pcl-1.5;
(對應自己機子上PCL的位置,如果為了CMAKE方便很多會放在根目錄下。即C:\PCL)
在庫目錄下添加:
C:\Program Files\PCL 1.5.1\3rdParty\Boost\lib;
C:\Program Files\PCL 1.5.1\3rdParty\Qhull\lib;
C:\Program Files\PCL 1.5.1\3rdParty\Flann\lib;
C:\Program Files\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8;
C:\Program Files\PCL 1.5.1\lib;
C:\Program Files\OpenNI\Lib;
在附加依賴項上添加:
opengl32.lib
pcl_kdtree_debug.lib
pcl_io_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_apps_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_visualization_debug.lib
pcl_common_debug.lib
flann_cpp_s-gd.lib
libboost_system-vc100-mt-gd-1_47.lib
libboost_filesystem-vc100-mt-gd-1_47.lib
libboost_thread-vc100-mt-gd-1_47.lib
libboost_date_time-vc100-mt-gd-1_47.lib
libboost_iostreams-vc100-mt-gd-1_47.lib
openNI.lib
vtkalglib-gd.lib
vtkCharts-gd.lib
vtkCommon-gd.lib
vtkDICOMParser-gd.lib
vtkexoIIc-gd.lib
vtkexpat-gd.lib
vtkFiltering-gd.lib
vtkfreetype-gd.lib
vtkftgl-gd.lib
vtkGenericFiltering-gd.lib
vtkGeovis-gd.lib
vtkGraphics-gd.lib
vtkhdf5-gd.lib
vtkHybrid-gd.lib
vtkImaging-gd.lib
vtkInfovis-gd.lib
vtkIO-gd.lib
vtkjpeg-gd.lib
vtklibxml2-gd.lib
vtkmetaio-gd.lib
vtkNetCDF-gd.lib
vtkNetCDF_cxx-gd.lib
vtkpng-gd.lib
vtkproj4-gd.lib
vtkRendering-gd.lib
vtksqlite-gd.lib
vtksys-gd.lib
vtktiff-gd.lib
vtkverdict-gd.lib
vtkViews-gd.lib
vtkVolumeRendering-gd.lib
vtkWidgets-gd.lib
vtkzlib-gd.lib
這里要注意PCL引用到的其他庫文件一定要加進去,VTK的庫很多,而且依賴關系我看得很亂,所以為了方便就全加進去了。
如果沒有加完整,很多信息提示錯誤的,之前忘了加一個什麼庫,導致很多error LNK2019,還讓我重裝了很多次……
注意庫要對應debug和release版,debug後面一般都有-gd或者_debug的,看看就能分出來了。對應錯了還會有error LNK:
error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in XXXX.......
這時應該可以看到成功生成的信息了:
❷ 開發Electron,不小心接觸到C++,經過一周多的時間終於摸索出
研究開發Electron過程中,發現程序在Windows環境下運行無誤,但在Linux和macOS系統中遇到問題,主要源於依賴的第三方插件只提供exe程序。為了解決這一問題,開始探索如何使用C++等源碼編譯出適用於Windows、Linux、macOS的二進制應用程序。
經過一周的學習與實踐,終於掌握如何編譯Linux和Windows應用程序,但尚未精通在單一系統環境下編譯出Windows、Linux、macOS兼容的程序。當前主要涉及交叉編譯技術,正深入研究以期獲得完整流程,以便後續發布相關教程。
開始准備工具,包括Windows 10操作系統、CMake、Visual Studio 2019等。學習過程分為幾個步驟:下載並解壓libpng-1.6.35源碼,查看依賴zlib的版本信息,下載zlib-1.2.8源碼,編譯生成debug和release版本的靜態鏈接庫,並復制zlib-1.2.8/build/zconf.h文件到zlib-1.2.8目錄下。隨後,使用CMake編譯libpng-1.6.35,並生成適用於Windows和Linux的靜態鏈接庫。同樣,遵循上述流程完成mozjpeg-4.0.3的編譯。
對於使用MinGW編譯的疑問,通過CMake GUI選擇「MinGW Makefile」進行配置,等待配置完成並生成Makefile後,在命令行中執行相應的make命令。如果編譯出的exe文件無法單獨使用,需確保程序依賴的dll文件與exe文件放在同一目錄,或使用.xxx-static.exe的命名格式,確保程序正常運行。