1问题:data_transformer.cpp
1>..\..\src\caffe\common.cpp(36): error C3861: “getpid”: 找不到标识符
===这种错误一般就是没有对应的函数或者对应的头文件
旧版的vs添加#include "unistd.h"即可
========
新版的VS添加#include "process.h"即可解决该问题
\src\caffe\util\db_lmdb.cpp(13): error C3861: “mkdir”: 找不到标识符
1>..\..\src\caffe\util\db_lmdb.cpp(13): error C2512: “google::CheckOpString”: 没有合适的默认构造函数可用
解决:打开db_lmdb,加入宏:
#if defined(_MSC_VER)
#include <direct.h>
#define mkdir(X, Y) _mkdir(X)
2问题:
.\..\src\caffe\util\io.cpp(35): error C3861: “open”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(40): error C3861: “close”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(45): error C3861: “open”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(49): error C3861: “close”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(53): error C3861: “open”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(63): error C3861: “close”: 找不到标识符
1>..\..\src\caffe\util\signal_handler.cpp(16): error C2065: “SIGHUP”: 未声明的标识符
解决:加入头文件:#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
2>e:\caffecudnn\caffe-master\caffe-master\tools\caffe.cpp(177): error C2220: 警告被视为错误 - 没有生成“object”文件
解决:加入一个返回值177行:return caffe::SolverAction::NONE;
4问题:
common.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl google::InstallFailureSignalHandler(void)" (__imp_?InstallFailureSignalHandler@google@@YAXXZ)
解决:common.cpp第49行改为:(原因:windows下的glog没有这个函数)#if !defined(_MSC_VER)
::google::InstallFailureSignalHandler();
#endif
4问题:
data_reader.obj : error LNK2001: 无法解析的外部符号 "public: unsigned __int64 __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::size(void)const " (?size@?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEBA_KXZ)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: class boost::shared_ptr<class caffe::DataReader::QueuePair> __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::pop(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?pop@?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEAA?AV?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::push(class boost::shared_ptr<class caffe::DataReader::QueuePair> const &)" (?push@?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEAAXAEBV?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >(void)" (??0?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEAA@XZ)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: class caffe::Datum * __cdecl caffe::BlockingQueue<class caffe::Datum *>::pop(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?pop@?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAAPEAVDatum@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: bool __cdecl caffe::BlockingQueue<class caffe::Datum *>::try_pop(class caffe::Datum * *)" (?try_pop@?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAA_NPEAPEAVDatum@2@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl caffe::BlockingQueue<class caffe::Datum *>::push(class caffe::Datum * const &)" (?push@?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAAXAEBQEAVDatum@2@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl caffe::BlockingQueue<class caffe::Datum *>::BlockingQueue<class caffe::Datum *>(void)" (??0?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAA@XZ)
解决:泛型没有实例化:blocking_queue.cpp
namespace caffe {后添加:
template class BlockingQueue<Datum*>;
template class BlockingQueue<shared_ptr<DataReader::QueuePair> >;
1>..\..\src\caffe\common.cpp(36): error C3861: “getpid”: 找不到标识符
===这种错误一般就是没有对应的函数或者对应的头文件
旧版的vs添加#include "unistd.h"即可
========
新版的VS添加#include "process.h"即可解决该问题
\src\caffe\util\db_lmdb.cpp(13): error C3861: “mkdir”: 找不到标识符
1>..\..\src\caffe\util\db_lmdb.cpp(13): error C2512: “google::CheckOpString”: 没有合适的默认构造函数可用
解决:打开db_lmdb,加入宏:
#if defined(_MSC_VER)
#include <direct.h>
#define mkdir(X, Y) _mkdir(X)
2问题:
.\..\src\caffe\util\io.cpp(35): error C3861: “open”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(40): error C3861: “close”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(45): error C3861: “open”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(49): error C3861: “close”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(53): error C3861: “open”: 找不到标识符
1>..\..\src\caffe\util\io.cpp(63): error C3861: “close”: 找不到标识符
1>..\..\src\caffe\util\signal_handler.cpp(16): error C2065: “SIGHUP”: 未声明的标识符
解决:加入头文件:#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
3问题:
error C2220: 警告被视为错误 - 没有生成“object”文件2>e:\caffecudnn\caffe-master\caffe-master\tools\caffe.cpp(177): error C2220: 警告被视为错误 - 没有生成“object”文件
解决:加入一个返回值177行:return caffe::SolverAction::NONE;
4问题:
common.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) void __cdecl google::InstallFailureSignalHandler(void)" (__imp_?InstallFailureSignalHandler@google@@YAXXZ)
解决:common.cpp第49行改为:(原因:windows下的glog没有这个函数)#if !defined(_MSC_VER)
::google::InstallFailureSignalHandler();
#endif
4问题:
data_reader.obj : error LNK2001: 无法解析的外部符号 "public: unsigned __int64 __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::size(void)const " (?size@?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEBA_KXZ)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: class boost::shared_ptr<class caffe::DataReader::QueuePair> __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::pop(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?pop@?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEAA?AV?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::push(class boost::shared_ptr<class caffe::DataReader::QueuePair> const &)" (?push@?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEAAXAEBV?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl caffe::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >::BlockingQueue<class boost::shared_ptr<class caffe::DataReader::QueuePair> >(void)" (??0?$BlockingQueue@V?$shared_ptr@VQueuePair@DataReader@caffe@@@boost@@@caffe@@QEAA@XZ)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: class caffe::Datum * __cdecl caffe::BlockingQueue<class caffe::Datum *>::pop(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?pop@?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAAPEAVDatum@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: bool __cdecl caffe::BlockingQueue<class caffe::Datum *>::try_pop(class caffe::Datum * *)" (?try_pop@?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAA_NPEAPEAVDatum@2@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: void __cdecl caffe::BlockingQueue<class caffe::Datum *>::push(class caffe::Datum * const &)" (?push@?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAAXAEBQEAVDatum@2@@Z)
2>data_reader.obj : error LNK2001: 无法解析的外部符号 "public: __cdecl caffe::BlockingQueue<class caffe::Datum *>::BlockingQueue<class caffe::Datum *>(void)" (??0?$BlockingQueue@PEAVDatum@caffe@@@caffe@@QEAA@XZ)
解决:泛型没有实例化:blocking_queue.cpp
namespace caffe {后添加:
template class BlockingQueue<Datum*>;
template class BlockingQueue<shared_ptr<DataReader::QueuePair> >;