Caffe编译问题之InstallFailureSignalHandler

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WL2002200/article/details/53868726

在windows下编译Caffe一直是一件很烦人的事,然而各路大牛的算法往往又是建立在自己的维护版本之上,所以只好硬着头皮编译。

问题描述

错误提示
common.obj : error LNK2019: unresolved external symbol “__declspec(dllimport) void __cdecl google::InstallFailureSignalHandler(void)” (__imp_?InstallFailureSignalHandler@google@@YAXXZ)
可以定位到common.cpp中的代码

void GlobalInit(int* pargc, char*** pargv) {
  // Google flags.
  ::gflags::ParseCommandLineFlags(pargc, pargv, true);
  // Google logging.
  ::google::InitGoogleLogging(*(pargv)[0]);
  // Provide a backtrace on segfault.
  ::google::InstallFailureSignalHandler();
} 

解法

最后一句出的问题,但google的glog其他函数运行正常。有网友说是因为boost未添加或者caffe/src/caffe下文件未完全编译。但不符合当下情景,还有的说直接注释掉就好了。
最后找到了原因,原来是windows下的glog没有这个函数。

void GlobalInit(int* pargc, char*** pargv) {
  // Google flags.
  ::gflags::ParseCommandLineFlags(pargc, pargv, true);
  // Google logging.
  ::google::InitGoogleLogging(*(pargv)[0]);
  // Provide a backtrace on segfault.
  // Windows port of glogs doesn't have this function built
 #if !defined(_MSC_VER)
  ::google::InstallFailureSignalHandler();
 #endif
}
阅读更多
换一批

没有更多推荐了,返回首页