convert_imageset.exe的生成

也不知道是不是自己太愚鈍,所有由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,下次有時間再試試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章