1. 程式人生 > >mrpt在win8.1 64bit + vs2013環境下的安裝和編譯

mrpt在win8.1 64bit + vs2013環境下的安裝和編譯

【宣告:大部分內容來自軒小宸】

win7 32bit見:http://www.cnblogs.com/xuanxiaochen/p/5996896.html

一、環境

windows 8.1 64bit,VS2013

(如果沒有特殊原因,建議所有軟體都安裝到預設位置,避免不必要的麻煩)

二、準備工作

0、系統更新

使用360安全衛士或其他工具把系統補丁打好,這一步並不是必需的,為以後安裝其他硬體的驅動做準備。

1、Cmake

下載合適自己系統的版本,安裝即可。

2、wxWidgets

另外還要下載wxWidgets手冊Manual ZIP。

將其解壓到C:\wxWidgets-x.x 或D:\wxWidgets-x.x(建議C盤)

開啟MSVC 64位終端 (開始選單 -》 Visual Studio 2013 -》 Visual Studio Tools -》 VS2013 x64 本機工具命令提示)

cd到X:\wxWidgets\build\msw

 

執行以下命令:  

nmake -f makefile.vc BUILD=release SHARED=1 RUNTIME_LIBS=dynamic DEBUG_INFO=0 VENDOR=mrpt USE_OPENGL=1 TARGET_CPU=amd64
nmake -f makefile.vc BUILD=debug SHARED=1 RUNTIME_LIBS=dynamic DEBUG_INFO=1
VENDOR=mrpt USE_OPENGL=1 TARGET_CPU=amd64

3、OpenCV

建議使用OpenCV2.4.0或以上版本

可以下載相應系統的對應版本,也可以下載原始碼後用Cmake進行編譯。建議直接採用前者直接下載安裝即可。

4、qt + qt_vs_addin

我使用的是Qt5.5.0 msvc2013_64,cmake不能自動識別qt5,需要在環境變數中新增一條

CMAKE_PREFIX_PATH = “Qt目錄下的msvc2013_64資料夾地址”

我的是 CMAKE_PREFIX_PATH = C:\Qt\Qt5.5.0\5.5\msvc2013_64

如果用qt4的話會方便一些,cmake可以自動識別。

5、PCL

這也不是必需安裝的,不過PCLAllInOne的安裝包中包含其他一些有用的三方庫。

要採用以下設定,記得將其中的地址改為預設地址。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup />
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>D:\Program Files\PCL 1.8.0\include\pcl-1.8;D:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_59;D:\Program Files\PCL 1.8.0\3rdParty\Eigen\eigen3;D:\Program Files\PCL 1.8.0\3rdParty\FLANN\include;D:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Include;D:\Program Files\PCL 1.8.0\3rdParty\Qhull\include;D:\Program Files\PCL 1.8.0\3rdParty\VTK\include\vtk-7.0;D:\Qt\Qt5.5.1\5.5\msvc2013_64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalLibraryDirectories>D:\Program Files\PCL 1.8.0\lib;D:\Program Files\PCL 1.8.0\3rdParty\Boost\lib;D:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Lib;D:\Program Files\PCL 1.8.0\3rdParty\FLANN\lib;D:\Program Files\PCL 1.8.0\3rdParty\Qhull\lib;D:\Program Files\PCL 1.8.0\3rdParty\VTK\lib;D:\Qt\Qt5.5.1\5.5\msvc2013_64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;comctl32.lib;wsock32.lib;glu32.lib;opengl32.lib;ws2_32.lib;Psapi.lib;pcl_visualization_debug.lib;pcl_search_debug.lib;pcl_io_debug.lib;pcl_io_ply_debug.lib;pcl_kdtree_debug.lib;pcl_common_debug.lib;pcl_octree_debug.lib;libboost_system-vc120-mt-gd-1_59.lib;libboost_filesystem-vc120-mt-gd-1_59.lib;libboost_thread-vc120-mt-gd-1_59.lib;libboost_date_time-vc120-mt-gd-1_59.lib;libboost_iostreams-vc120-mt-gd-1_59.lib;libboost_chrono-vc120-mt-gd-1_59.lib;vtkDomainsChemistryOpenGL2-7.0-gd.lib;vtkDomainsChemistry-7.0-gd.lib;vtkFiltersFlowPaths-7.0-gd.lib;vtkFiltersGeneric-7.0-gd.lib;vtkFiltersHyperTree-7.0-gd.lib;vtkFiltersParallelImaging-7.0-gd.lib;vtkFiltersProgrammable-7.0-gd.lib;vtkFiltersSelection-7.0-gd.lib;vtkFiltersSMP-7.0-gd.lib;vtkFiltersVerdict-7.0-gd.lib;vtkverdict-7.0-gd.lib;vtkGeovisCore-7.0-gd.lib;vtkproj4-7.0-gd.lib;vtkGUISupportQtSQL-7.0-gd.lib;vtkIOSQL-7.0-gd.lib;vtksqlite-7.0-gd.lib;vtkImagingMath-7.0-gd.lib;vtkImagingMorphological-7.0-gd.lib;vtkImagingStatistics-7.0-gd.lib;vtkImagingStencil-7.0-gd.lib;vtkInteractionImage-7.0-gd.lib;vtkIOAMR-7.0-gd.lib;vtkFiltersAMR-7.0-gd.lib;vtkIOEnSight-7.0-gd.lib;vtkIOExodus-7.0-gd.lib;vtkIOExport-7.0-gd.lib;vtkIOImport-7.0-gd.lib;vtkIOInfovis-7.0-gd.lib;vtklibxml2-7.0-gd.lib;vtkIOLSDyna-7.0-gd.lib;vtkIOMINC-7.0-gd.lib;vtkIOMovie-7.0-gd.lib;vtkoggtheora-7.0-gd.lib;vtkIOParallel-7.0-gd.lib;vtkexoIIc-7.0-gd.lib;vtkFiltersParallel-7.0-gd.lib;vtkIONetCDF-7.0-gd.lib;vtkNetCDF_cxx-7.0-gd.lib;vtkNetCDF-7.0-gd.lib;vtkhdf5_hl-7.0-gd.lib;vtkhdf5-7.0-gd.lib;vtkjsoncpp-7.0-gd.lib;vtkIOParallelXML-7.0-gd.lib;vtkIOXML-7.0-gd.lib;vtkIOXMLParser-7.0-gd.lib;vtkexpat-7.0-gd.lib;vtkParallelCore-7.0-gd.lib;vtkIOLegacy-7.0-gd.lib;vtkIOPLY-7.0-gd.lib;vtkIOGeometry-7.0-gd.lib;vtkIOVideo-7.0-gd.lib;vtkRenderingContextOpenGL2-7.0-gd.lib;vtkRenderingImage-7.0-gd.lib;vtkRenderingLOD-7.0-gd.lib;vtkRenderingQt-7.0-gd.lib;vtkFiltersTexture-7.0-gd.lib;vtkRenderingVolumeOpenGL2-7.0-gd.lib;vtkViewsContext2D-7.0-gd.lib;vtkViewsQt-7.0-gd.lib;vtkGUISupportQt-7.0-gd.lib;vtkRenderingOpenGL2-7.0-gd.lib;vtkglew-7.0-gd.lib;vtkViewsInfovis-7.0-gd.lib;vtkChartsCore-7.0-gd.lib;vtkRenderingContext2D-7.0-gd.lib;vtkFiltersImaging-7.0-gd.lib;vtkInfovisLayout-7.0-gd.lib;vtkInfovisCore-7.0-gd.lib;vtkViewsCore-7.0-gd.lib;vtkInteractionWidgets-7.0-gd.lib;vtkImagingHybrid-7.0-gd.lib;vtkIOImage-7.0-gd.lib;vtkDICOMParser-7.0-gd.lib;vtkIOCore-7.0-gd.lib;vtkmetaio-7.0-gd.lib;vtkpng-7.0-gd.lib;vtktiff-7.0-gd.lib;vtkjpeg-7.0-gd.lib;vtkFiltersHybrid-7.0-gd.lib;vtkImagingGeneral-7.0-gd.lib;vtkImagingSources-7.0-gd.lib;vtkFiltersModeling-7.0-gd.lib;vtkInteractionStyle-7.0-gd.lib;vtkRenderingAnnotation-7.0-gd.lib;vtkImagingColor-7.0-gd.lib;vtkRenderingVolume-7.0-gd.lib;vtkRenderingLabel-7.0-gd.lib;vtkRenderingFreeType-7.0-gd.lib;vtkRenderingCore-7.0-gd.lib;vtkCommonColor-7.0-gd.lib;vtkFiltersExtraction-7.0-gd.lib;vtkFiltersStatistics-7.0-gd.lib;vtkalglib-7.0-gd.lib;vtkImagingFourier-7.0-gd.lib;vtkImagingCore-7.0-gd.lib;vtkFiltersGeometry-7.0-gd.lib;vtkFiltersSources-7.0-gd.lib;vtkFiltersGeneral-7.0-gd.lib;vtkFiltersCore-7.0-gd.lib;vtkCommonExecutionModel-7.0-gd.lib;vtkCommonComputationalGeometry-7.0-gd.lib;vtkCommonDataModel-7.0-gd.lib;vtkCommonMisc-7.0-gd.lib;vtkCommonTransforms-7.0-gd.lib;vtkCommonMath-7.0-gd.lib;vtkCommonSystem-7.0-gd.lib;vtkCommonCore-7.0-gd.lib;vtksys-7.0-gd.lib;vtkfreetype-7.0-gd.lib;vtkzlib-7.0-gd.lib;Qt5Widgetsd.lib;Qt5Guid.lib;Qt5Cored.lib;flann_cpp_s-gd.lib;OpenNI2.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

三、配置MRPT

1、下載

下載Binaries (precompiled) for Windows VS2013 64bit版本。

直接安裝,如安裝到D:\Program Files\mrpt-1.4.0

新建自定義目錄,作為MPRT編譯工作目錄,如本文D:\MRPT\buildVS2013(該目錄可自行定義)

2、Cmake(cmake-core)配置

(1)設定

編譯器選擇VS2013 64位。

Where is the source code : D:/Program Files/mrpt-1.4.0

Where to build the binaries: D:/MRPT/buildVS2013

第一次點Configure,會出現很多問題,一個個解決。

若Configure報錯,請以管理員身份執行CMAKE,或者參考:

http://bbs.ithome.com/thread-583106-1-1.html

 

(2)詳細配置(部分設定需要勾選Advanced才能出現)

1)設定OPENCV路徑

OPENCV_DIR = D:/opencv/build

2)設定wxWidget路徑

      wxWidgets_ROOT_DIR = D:/wxWidgets-3.1.0

      wxWidgets_LIB_DIR = D:/wxWidgets-3.1.0/lib/vc_x64_dll

3)檢查以下Qt5的路徑有沒有被找到,若沒有,請參考上文提到Qt5部分。

(3)其他配置

      BUILD_APPLICATIONS:預設為ON。如果未選上,則不能生成應用軟體。如不需要,可以取消。建議第一次使用MRPT時,請勾選,可以深入瞭解其中的程式碼及過程。

      BUILD_APP_**:預設為ON。對應的應用軟體,如不用編譯,可以不勾選。

      BUILD_ARIA:預設ON。是否生成用於連線Activemedia機器人的ARIA庫,如未使用,請取消。

      PCL_DIR:PCL點雲庫。如需使用,請先安裝PCL點雲庫。

      BUILD_KINECT:預設ON。如未使用Kinect,可以取消。      

      BUILD_ROBOPEAK_LIDAR:預設ON。RobotPeak Lidar配置。

再一次點選Configure,基本選項配置如下(可能會有部分不同,關鍵項一致就可以):

     ______________________ OPTIONAL LIBRARIES ______________________

    Assimp (3D models) : Yes (Built-in) [Version: 3.1.1]

    eigen3 : Yes (Built-in) [Version: 3.2.5]

    ffmpeg libs (Video streaming) : Yes (System) [avcodec , avutil , avformat ]

    gtest (Google unit testing library) : Yes (Built-in)

    Intel threading lib (TBB) : No

    lib3ds (3DStudio scenes) : Yes (Built-in)

    libclang (for ConvertUTF) : Yes (Built-in)

    libjpeg (jpeg) : Yes (Built-in)

    liblas (ASPRS LAS LiDAR format) : No

    mexplus : No

    OpenCV (Image manipulation) : Yes (System) [Version: 2.4.13]

    OpenGL : Yes (System)

    GLUT : Yes (Built-in)

    PCAP (Wireshark logs for Velodyne) : No

    PCL (Pointscloud library) : Yes [Version: ...]

    SuiteSparse : No

    wxWidgets : Yes (System)

    zlib (compression) : Yes (Built-in)

    yamlcpp (YAML file format) : No [Version: ]

    _____________________ HARDWARE & SENSORS _______________________

    libdc1394-2 (FireWire capture) : No

    DUO3D Camera libs : No

    National Instruments...

    ...NIDAQmx? : No

    ...NIDAQmx Base? : No

    NITE2 library : No

    OpenKinect libfreenect : No

    OpenNI2 : Yes

    PGR FlyCapture2 : No

    PGR Triclops : No

    Phidgets : No

    RoboPeak LIDAR : Yes

    SwissRanger 3/4000 3D camera : No

    Videre SVS stereo camera : No

    xSENS MT 3rd generation : Yes (Built-in)

    xSENS MT 4th generation : Yes (Built-in)

    Intersense sensors : No 

    其他硬體及感測器,請根據自行需要配置。

四、編譯MRPT

接著上一步,點選open project,可直接用VS2013開啟專案檔案。

在進行編譯前,請關閉瀏覽器、防毒軟體、PDF閱讀軟體等較佔用記憶體較大的軟體。如果你是戰鬥機,請忽略。

接著就可以直接點選生成解決方案。

    

編譯過程稍長,耐心等待。

編譯完成即可。

五、異常解決方案

    錯誤1:

      error LNK1104: 無法開啟檔案“libmrpt-hwdrivers140-dbg.lib” 等其他類似錯誤

    解決方法:

      如有以上錯誤,請先檢查其他錯誤;重新編譯後,如果沒有其他錯誤,一般都不會出現。如有,請重新檢查以上配置是否正確。

    錯誤2:

      error C1083: 無法開啟包括檔案: “wx/image.h”: No such file or directory 

    解決方法:

      請檢查wxWidget安裝和CMAKE配置步驟,是否設定正確路徑。

    錯誤3:

      error LNK1112: 模組計算機型別“x64”與目標計算機型別“X86”衝突

    解決方法:

      請檢查下載mrpt包是否是對應系統版本。

    錯誤5:

      “M_PI”: 巨集重定義

    解決方法:

      找到對應的math.h檔案,將M_PI定義新增兩句程式碼。如下,      

  #ifndef M_PI
      #define M_PI       3.14159265358979323846
  #endif

    錯誤6:

      編譯器的堆空間不足

    解決方法:

      編譯前請關閉瀏覽器、防毒軟體等佔用記憶體較大的軟體。

    錯誤7:(最關鍵的一個錯誤)

      error C2371: “int32_t”: 重定義;不同的基型別  或“int8_t”

    解決辦法:

      因為兩個.h檔案所定義的int32_t和int8_t的型別不同。錯誤會提示哪兩個.h檔案衝突,開啟pstdint.h檔案,找到對應的定義,並修改為另一個.h檔案的定義型別。另外因為許可權問題,pstdint.h檔案無法直接修改,可將其儲存在其他目錄並複製到該目錄下。在覆蓋之前,先進行備份

    錯誤8:

      error MSB6006: “CL.exe”已退出,程式碼為X

    解決方法:

      關閉所有防毒軟體或類似程式

  六、參考

    《MRPT Tutorial》 (中文版) 汪若博 譯

  (歡迎轉載,轉載請註明出處。)