也不知道是不是自己太愚鈍,所有由convert_imageset.cpp生成convert_imageset.exe的就一句話帶過,而且還用了半個上午的時間。
弄完以後看看確實不難,但是思路卻是很重要的。自己走入了莫大的誤區。
首先是誤區總結:嘗試把convert_imageset.cpp單獨生成。
受到網上資料的誤導,嘗試着去單獨編譯cpp文件,自然報了無數的錯,主要是include各類文件找不到。可不是嗎!本身就應該在Caffe環境內編譯生成的文件怎麼可能單獨拿出來跑。事實上,convert_imageset.cpp和caffe.cpp是一樣的,兩個都包含main入口,所以只需要把caffe刪掉,換成convert_imageset就可以在caffe環境中跑了,而不需要爲了跑起來這個cpp單獨配無數個文件。
需要講明白的是,convert_imageset本身是一個工具,這個工具和caffe.cpp地位是一樣的,他的作用是將圖片轉爲lmdb格式,傳給caffe去訓練。
然後,遇到了第二個小問題。編譯時出現 error C3861: “snprintf”: 找不到標識符
網上搜到的解決方案
[code]在使用VSS2013編譯C++程序時,當調用stdio.h庫時,比如調用以下函數:
[code]會出現以下錯誤: error C3861: “snprintf”: 找不到標識符 原因是: snprintf()函數並不是標準c/c++中規定的函數,所以在許多編譯器中,廠商提供了其相應的實現的版本。 在gcc中,該函數名稱就snprintf(),而在VS中稱爲_snprintf。 解決方法(二者選其一即可): 1.將snprintf時改成_snprintf 2.在預編譯處加入:
[code]#if _MSC_VER
[code]#define snprintf _snprintf
[code]#endif
總自以爲是的認爲這個錯誤是不可能有這麼幼稚的解決方式,然而事實證明我又錯了,在snprintf前面加一個_,一切就解決了。
目前爲止還沒有成功使用這個exe,下次有時間再試試。