编译Caffe-Win错误集锦

Caffe在Windows下编译还是遇到不少麻烦的...

1.visual studio 2013 error C2371: 'int8_t' : redefinition;

      引入的unistd.h文件里面重定义了int8_t  ,用记事本 打开文件注销之。


2. error C3861: 'getpid': identifier not found    C:\Tools\caffe-master\src\caffe\common.cpp    26

     解决:在common.cpp 里面添加 #include <process.h>

     修改:

pid = getpid(); ——>pid = _getpid();

3.  error C3861: 'usleep': identifier not found    C:\Tools\caffe-master\src\caffe\test\test_benchmark.cpp    65

参考:ffmpeg编译总结

4. 出现 'usleep': identifier not found

     这里因为VC中没有usleep,usleep是微妙级别的,所以需要把代码改为

usleep(is->audio_st && is->show_audio ? rdftspeed*1000 : 5000);
—>    Sleep (is->audio_st && is->show_audio ? rdftspeed*1 : 5);
usleep(300 * 1000); —> Sleep(300);

      添加:#include <windows.h>


5. error C3861: 'snprintf': identifier not found    C:\Tools\caffe-master\src\caffe\solver.cpp    331

参考:http://blog.163.com/wanghuajie@126/blog/static/452312862009111114434838/

   在solver.cpp里面添加      #include <stdio.h>

   snprintf  修改为 _snprintf

6. error C3861: '__builtin_popcount': identifier not found    C:\Tools\caffe-master\src\caffe\util\math_functions.cpp    346

参考:http://blog.csdn.net/rappy/article/details/1788969

      __builtin_popcount 这是一个GCC的函数:计算一个 32 位无符号整数有多少个位为1 

     解决:自己写一个函数__builtin_popcount

template <typename Dtype>
unsigned int __builtin_popcount(Dtype u)
{
    u = (u & 0x55555555) + ((u >> 1) & 0x55555555);
    u = (u & 0x33333333) + ((u >> 2) & 0x33333333);
    u = (u & 0x0F0F0F0F) + ((u >> 4) & 0x0F0F0F0F);
    u = (u & 0x00FF00FF) + ((u >> 8) & 0x00FF00FF);
    u = (u & 0x0000FFFF) + ((u >> 16) & 0x0000FFFF);
    return u;
}//wishchin!!!

7.error : identifier "::caffe::kBNLL_THRESHOLD" is undefined in device code    C:\Tools\caffe-master\src\caffe\layers\bnll_layer.cu    36

参考:解决:在bnll_layer.cu    里修改

Dtype expval = exp(min(in_data[index], Dtype(kBNLL_THRESHOLD)));
——>Dtype expval = exp(min(in_data[index], Dtype(50)));

8. error C2660: 'mkdir' : function does not take 2 arguments    C:\Tools\caffe-master\src\caffe\test\test_data_layer.cpp    71

解决:

CHECK_EQ(mkdir(filename_->c_str(), 0744), 0) << "mkdir " << filename_<< "failed"; 

     里面的第二个参数去掉。

9.error C2784: '_Ty std::max(std::initializer_list<_Elem>,_Pr)' : could not de

解决:

     调用函数处 把std::max 用括号 括起来  (std::max)(std::initializer_list<

10.error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS.

    参考:http://www.zhihu.com/question/26242158

   解决:应该这样添加 -D去掉 属性-> c\c++ -> 预处理器 -> 预处理器定义 里添加 _SCL_SECURE_NO_WARNINGS 编译成功 ,

XXX:不断出现的

        error C1075: end of file found before the left parenthesis '(' at '  test_infogain_loss_layer.cpp    71

       也没有找到哪里错了。应该是Define语句出现问题, 貌似可以不用管它.............

参考 

https://blog.csdn.net/wishchin/article/details/45339753 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值