链接Caffe,程序报错应用程序无法正常启动(0xc000007b)
重点是介绍了一种排查这个问题的方法。
背景
- Windows 下, Caffe 单独编译成库并且安装在路径 Caffe_DIR, 动态链接库 Caffe_DIR/bin 已经加入环境变量了
- Run_DIR/main.exe 是一个链接了 Caffe lib 的程序,在运行的时候报错 “ 应用程序无法正常启动(0xc000007b),请单击“确定”关闭应用程序 ”

Debug
- 把 main.exe 复制到 Caffe_DIR/bin 中(和一堆dll放一起),双击运行,嗯?可以跑;这说明问题出在没有找到必要的.dll,但是我明明把Caffe_DIR 加入环境变量并且重启过啊,不明所以,继续试验
把 Caffe_DIR/bin 里面所有.dll 复制到原先的main.exe 所在目录Run_DIR,双击 main.exe,可以跑,确定问题就出在这堆 .dll中
(前提是 Caffe_DIR/bin 已经在环境变量中)逐个删除Run_DIR里的.dll文件,每删除一个就 运行一下 main.exe,直到在删除 libgcc_s_seh-1.dll 之前都可以运行(这也证明了我们之前加入环境变量中确实生效了)。所以问题就出在 libgcc_s_seh-1.dll 链接库上,这个是caffe的依赖 openblas 带来的。虽然它的路径已经被添加到环境变量中,但是不知道为什么没有生效。
解决办法
把 libgcc_s_seh-1.dll 这个dll 文件放在 main.exe 的路径下就可以了,它将被优先找到。
原因(猜想)
因为时间原因没有深入挖掘,但是我认为最有可能的原因是,在我的电脑里有多个 libgcc_s_seh-1.dll 文件,在main.exe 装载的时候先找到了另外一个版本的 同名的.dll, 真假孙悟空,假悟空让我取不了真经; 如果只是相应的库没有找到,按照经验windows 都会报错缺少 "xxxx.dll"。
全局搜索了一下电脑,发现叫 libgcc_s_seh-1.dll的文件可真多啊。

总结
主要记录了一次BUG的排查过程,主要思想是先找到对的,再去控制变量,执果索因找到不对的。 因为感觉这个问题很有可能会再次遇到,所以先记录下来,也分享给大家。
链接Caffe,程序报错应用程序无法正常启动(0xc000007b)的更多相关文章
- 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory
运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such f ...
- eclipse运行hadoop程序报错:Connection refused: no further information
eclipse运行hadoop程序报错:Connection refused: no further information log4j:WARN No appenders could be foun ...
- Window7中Eclipse运行MapReduce程序报错的问题
按照文档:http://www.micmiu.com/bigdata/hadoop/hadoop2x-eclipse-mapreduce-demo/安装配置好Eclipse后,运行WordCount程 ...
- WinDbg抓取程序报错dump文件的方法
程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...
- 解决C语言程序报错:return type defaults to‘int’
下面是通过自定义一个函数printN,之后在main函数中调用printN,使得可以通过输入整数N,将从1到N的全部整数都打印出来的程序. 但是在编译过程中却报错: return type defau ...
- 小程序报错 TLS 版本必须大于等于 1.2
https://www.cnblogs.com/phpper/p/6866036.html 服务器是windows 2008 server 环境是IIS7SSL是申请用的阿里免费.微信小程序发现wx. ...
- 记录微信小程序报错 Unexpected end of JSON input;at pages/flow/checkout page getOrderData function
微信小程序报错 Unexpected end of JSON input;at pages/flow/checkout page getOrderData function 这个报错是在将数组对象通过 ...
- excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法 office2007应该遇到“向程序发送命令时出现 问题”,设置为以管理员运行也不好用,重装office也不好用,下面介绍下 ...
- 【spring cloud】【IDEA】【maven】spring cloud多模块在idea上使用maven插件打包报错:程序包XXX不存在
>>>>spring cloud 多模块 >>>>在idea上使用maven插件打包,欲打包成jar包后 进行部署 >>>> 报 ...
随机推荐
- Fiona简介
Fiona是一个python地理空间处理库,类似于OGR
- springCloud 搭建eureka服务之天坑
这里我是采用gradle来管理jar包的. 1.使用idea创建一个gradle项目. 2.编辑settings.gradle文件 rootProject.name = 'jtm' //include ...
- [JZOJ6400]:Game(贪心+线段树+二分)
题目描述 小$A$和小$B$在玩一个游戏,他们两个人每人有$n$张牌,每张牌有一个点数,并且在接下来的$n$个回合中每回合他们两人会分别打出手中的一张牌,点数严格更高的一方得一分,然而现在小$A$通过 ...
- python3笔记十九:os和ospath模块
一:学习内容 os模块 ospath模块 获取指定目录下所有文件和目录 二:os模块 包含了普遍的操作系统功能,需要导入该模块:import os 当前所在位置目录结构为: 目录操作 1.获取当前目录 ...
- Tracer使用
1.选择event List可以迅速完成操作,而选择simulation就会一步一步地执行操作,但是如果都点了下方的Delete删了记录的话,所有的机器都是该整个流程执行完毕的结果.
- 界面之下:还原真实的 MV* 模式
界面之下:还原真实的MV*模式 作者:戴嘉华 转载请注明出处并保留原文链接( https://github.com/livoras/blog/issues/11 )和作者信息. 目录: 前言 MVC ...
- JS检测浏览器版本信息(包含IE11),并动态添加样式
<head runat="server"> <meta http-equiv="Content-Type" content="tex ...
- D5(太长了md没写完)
动态规划 三种常见实现方法 对于一个斐波那契数列,我们想要求第n项的值,就需要一项一项的递归来求 来看代码 f[o] = 0; f[1] = 1; for (int i = 2; i <= n; ...
- Emacs 浏览网页
Emacs 浏览网页非常方便,还可以忽略掉那些烦人的小广告.特别是在看小说 的时候~ 在之前了解如何通过Emacs浏览网页时,大部分人使用的是w3m,折腾了半天,没能成功.后来无意间发现 ,有EWW ...
- 【JAVA系列】Google爬虫如何抓取JavaScript的?
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[JAVA系列]Google爬虫如何抓取Java ...