用vs2013建立caffe工程

caffe C++接口使用配置

含caffe源碼的配置方式(CPU only)

  • 首先使用源碼按照官方的方式編譯Debug版Caffe【官方參考】,咱們須要編譯後所生成的以下文件:
    • caffeproto-d.lib
    • caffe.pb.h
      > 注:由於編譯caffe時的依賴文件很難下載,因此這裏給出了百度網盤的分享連接,下載完成以後放在C盤下當前用戶的文件夾中(以個人機器爲例:C:\Users\HJiahu\.caffe\dependencies\download\libraries_v140_x64_py35_1.1.0.tar.bz2
  • 編譯完caffe後將install文件夾下的include文件夾複製出來與caffe源碼(位於根目錄中src目錄下)一塊兒放在同一個文件夾caffe_src下(這樣作是爲了方便。只有編譯後的include文件夾下才有caffe.pb.h文件)。caffe_src的結構以下:git

    - caffe_src 
        - include
            - caffe
                - layers
                - proto
                    - caffe.pb.h
                - util
                ...
        - src
            - caffe
                - layers
                - solvers
                - util
                ...
  • 建立vs控制檯空項目(注意將解決方案平臺設置爲x64,而不是x86),將上面caffe_src中全部的代碼都添加當前項目中(注意:全部代碼包含子目錄中的代碼,爲了方即可以在項目中添加新的篩選器,便於文件的管理)。
  • 將對應的依賴文件添加到項目中
    • 依賴的頭文件
      • I:\learn_caffe\learn_caffe\caffe_src\include,這個就是上面提到的從install文件夾中複製出來的include目錄
      • C:\***\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include,這個和下面的內容源於編譯caffe時自動下載的依賴包。
      • C:\***\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include\boost-1_61
    • 在預處理定義中添加以下內容github

      CPU_ONLY
          _SCL_SECURE_NO_WARNINGS
          _CRT_SECURE_NO_DEPRECATE
          _CRT_NONSTDC_NO_DEPRECATE
                          USE_LMDB
                          USE_OPENCV
    • 庫目錄(將上面提到的caffeproto-d.lib也複製到下面的文件夾中)
      • C:\***\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\lib
      • 爲了方便,我使用我本身編譯的opencv庫,由於只要添加一個庫就好:opencv_world320d.lib,一樣要把對應的庫文件夾添加到項目中。
      • 全部依賴庫文件以下所示(其實我並不知道哪些是必須的因此就把能加的都加上去了):windows

        caffeproto-d.lib
        opencv_world320d.lib
        boost_chrono-vc140-mt-gd-1_61.lib
        boost_date_time-vc140-mt-gd-1_61.lib
        boost_filesystem-vc140-mt-gd-1_61.lib
        boost_system-vc140-mt-gd-1_61.lib
        boost_thread-vc140-mt-gd-1_61.lib
        boost_timer-vc140-mt-gd-1_61.lib
        libopenblas.dll.a
        caffehdf5_D.lib
        caffehdf5_cpp_D.lib
        caffehdf5_hl_D.lib
        caffehdf5_hl_cpp_D.lib
        caffezlibd.lib
        caffezlibstaticd.lib
        gflagsd.lib
        glogd.lib
        leveldbd.lib
        libboost_chrono-vc140-mt-gd-1_61.lib
        libboost_system-vc140-mt-gd-1_61.lib
        libboost_timer-vc140-mt-gd-1_61.lib
        libcaffehdf5_D.lib
        libcaffehdf5_cpp_D.lib
        libcaffehdf5_hl_D.lib
        libcaffehdf5_hl_cpp_D.lib
        libprotobufd.lib
        libprotocd.lib
        lmdbd.lib
        snappy_staticd.lib
        snappyd.lib
                        ntdll.lib
  • 在編譯的時候系統會提示沒法打開lib*.lib文件,個人系統中主要是boost中的一些lib。其實這些lib在文件夾中是存在的只是命名的方式不對。將庫文件夾中對應的lib文件前面加上lib三個字母就能夠了。例如個人系統中提示找不到boost_thread-vc140-mt-gd-1_61.lib,在同一個文件夾中建立一個副本並從新命名爲libboost_thread-vc140-mt-gd-1_61.lib就好了。
  • 添加一個main函數後就能夠一步一步調試caffe代碼了(我直接從源代碼tools文件夾中把caffe.cpp複製出來做爲調試入口文件)。app

不含caffe源碼的配置方式(僅使用caffe的頭文件 CPU only)

編譯caffe (這裏編譯release版)

  • 編譯caffe,可參考官方文檔函數

    配置vs2013

  • 配置當前項目爲Release x64
  • 包含目錄爲ui

    G:\caffe_rel\build\libraries\include\boost-1_61
    G:\caffe_rel\build\libraries\include
    G:\caffe_rel\build\install\include
  • 庫目錄爲調試

    G:\caffe_rel\build\lib
    G:\caffe_rel\build\libraries\lib
    C:\CNNs\opencv_with_world\x64\vc12\lib
  • 添加兩個預處理宏code

    USE_OPENCV
    CPU_ONLY
  • 附加庫爲接口

    opencv_world310.lib
    gflags.lib
    glog.lib
    libprotobuf.lib
    libprotoc.lib
    caffe.lib
    proto.lib
  • 與上同,修改boost_thread-vc120-mt-1_61.lib等文件的名稱ci

不含caffe源碼的配置方式(僅使用caffe的頭文件 GPU cuda&cudnn)

先使用官網提供的方法編譯caffe
下面的庫須要加入到vs2013中

opencv_world320d.lib
caffe-d.lib
caffeproto-d.lib
libprotobufd.lib
libopenblas.dll.a
gflagsd.lib
glogd.lib
cublas.lib
cuda.lib
cudnn.lib
cudart.lib
curand.lib
caffehdf5_D.lib
caffehdf5_hl_D.lib
caffezlibd.lib
libboost_thread-vc140-mt-gd-1_61.lib (若是是vs2013的話這裏是120,具體boost庫的名稱要按照編譯器的提示添加)
相關文章
相關標籤/搜索