Caffe編譯錯誤整理


今天編譯caffe-ssd遇到編譯錯誤:

1   Line 9690: 3>E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(141): error C2061: syntax error: identifier 'SliceLayer'
2     Line 9690: 3>E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(141): error C2061: syntax error: identifier 'SliceLayer'
3     Line 9696: 3>E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(262): error C2061: syntax error: identifier 'NormalizeLayer'
4     Line 9696: 3>E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(262): error C2061: syntax error: identifier 'NormalizeLayer'
5     Line 9702: 3>E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(272): error C2061: syntax error: identifier 'InnerProductLayer'
6     Line 9702: 3>E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(272): error C2061: syntax error: identifier 'InnerProductLayer'
7     Line 10141: 4>LINK : fatal error LNK1104: cannot open file '..\lib\Debug\caffe-d.lib'

經查,是下面文件里沒有添加上面對應的三個頭文件。

 

 

添加下面三行到layer_factory.cpp:

#include "caffe/layers/slice_layer.hpp"
#include "caffe/layers/normalize_layer.hpp"
#include "caffe/layers/inner_product_layer.hpp"

再次編譯,報錯:

E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(265): error C2955: 'caffe::NormalizeLayer': use of class template requires template argument list
E:\GitHub\caffe-ssd-windows\include\caffe/layers/normalize_layer.hpp(18): note: see declaration of 'caffe::NormalizeLayer'
E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(267): note: see reference to function template instantiation 'boost::shared_ptr<caffe::Layer<Dtype>> caffe::GetNormalizeLayer<float>(const caffe::LayerParameter &)' being compiled
 with
 [
 Dtype=float
 ]
E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(265): error C2514: 'caffe::NormalizeLayer': class has no constructors
E:\GitHub\caffe-ssd-windows\include\caffe/layers/normalize_layer.hpp(18): note: see declaration of 'caffe::NormalizeLayer'
E:\GitHub\caffe-ssd-windows\src\caffe\layer_factory.cpp(275): error C2514: 'caffe::InnerProductLayer': class has no constructors

查找原因:

 return shared_ptr<Layer<Dtype> >(new NormalizeLayer(param));

改為(添加了<Dtype>):

return shared_ptr<Layer<Dtype> >(new NormalizeLayer<Dtype>(param));

將:

return shared_ptr<Layer<Dtype> >(new InnerProductLayer(param));

改為(添加了<Dtype>):

return shared_ptr<Layer<Dtype> >(new InnerProductLayer<Dtype>(param));

然后就編譯通過了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM