編譯caffe時,遇到問題:無法開啟檔案“libboost_thread-vc120-mt-gd-1_58.lib
新手,Visual Studio 2013 配置Boost庫。 如何編譯和選擇,遇到無法開啟檔案“libboost_thread-vc120-mt-gd-1_58.lib的解決辦法
1.到官網下載最新的boost,www.boost.org 這裡我下載的1-58版本
2.解壓
3.從開始選單開啟VS的Visual Studio Tools,選擇X86命令提示(感覺應該也可以用Dos)
4.到解壓目錄下,例如我解壓到D盤,則進入D盤,進入boost_1_58_0目錄,然後執行bootstrap.bat檔案。稍等一小會就OK。
5.此時該資料夾下將會生成bjam.exe檔案。使用這個工具來編譯boost庫。按照網上的說法VS2013要指定輸出庫的型別,否則會缺少一個lib檔案。
這裡動態庫和靜態庫分別的編譯命令如下:
// 如果要獲取動態庫:
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release
// 如果是要獲取靜態庫:
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=static runtime-link=static threading=multi debug release
這裡我選擇靜態庫,當然可以根據自身的要求選擇更多。就在剛剛的命令列下繼續執行這個編譯命令。大約需要30分鐘。根據電腦配置,太低可能要一小時。然後等待編譯完畢。
6.此時編譯完成後,將上面在C盤的Boost庫拷貝到任意的位置等待使用。例如我拷到了D盤。
7.在VS中包含include和lib。C++常規中和聯結器中將目錄新增進去。
8.可以使用boost啦。
#include "stdafx.h"
#include <iostream>
#include <boost/thread/thread.hpp>
void hello()
{
std::cout << "Hello world, I'm a thread!" << std::endl;
}
int main()
{
boost::thread thrd(&hello);
thrd.join();
}
出錯!
擦,菜鳥啊真不懂啥疑問。想一想,剛剛說的,多執行緒?
解決辦法:
將MDd改成MTd。再去執行一下。就OK了。
雖然解決了問題,但是具體的原因還沒有研究清楚。還有許多問題,我們一個個去解決吧。