也不知道是不是自己太愚钝,所有由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,下次有时间再试试。