链接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包后 进行部署 >>>> 报 ...
随机推荐
- String Compression
F. String Compression 利用dp和前缀数组来写 dp[i] 所表示的东西是 字符串 s[0:i] (不包括 s[i])能够压缩的最短长度 bj[i][j] 表示的是字符串 s[i: ...
- 10个PHP代码片段
还记得CSDN研发频道此前发表过的一篇<可以直接拿来用的15个jQuery代码片段>吗?本文笔者将继续为你奉上10个超级有用的PHP代码片段. PHP是一种HTML内嵌式的语言,是一种在服 ...
- 02.替换空格 (Java)
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路 感觉这题对于Java意义 ...
- Zookeeper(六)服务器
Zookeeper(六)服务器 zkServer.cmd中声明 首先启动QuorumPeerMain set ZOOMAIN=org.apache.zookeeper.server.quorum.Qu ...
- watir学习系列--对话框处理(转)
1.下面是网上编写的类库,保存为libAutoit.rb #LibAutoit主要处理windows弹出的对话框,调用autoit类进行处理 #函数如下: #- ChooseFileDialog函数: ...
- weblogic报:java.lang.LinkageError: loader constraint violation in interface itable initialization
原因分析: gdaml服务中依赖org.apache.xerces_2.9.0.v201101211617.jar会产生jar包冲突 解决方法: 项目中的这个jar包删除,并将这个jar包放在服务器中 ...
- IMDB Classification on Keras
IMDB Classification on Keras In the book of Deep Learning with Python, there is an example of IMDB m ...
- 深度学习基础——Epoch、Iteration、Batchsize
原文地址:https://www.cnblogs.com/Johnny-z6951/p/11201081.html 梯度下降是一个在机器学习中用于寻找较佳结果(曲线的最小值)的迭代优化算法.梯度的含义 ...
- 解决打开AS多次提示Untrusted Server's certificate问题
解决方法如下: 打开Studio左上角的file—>Setting-->Tools-->Server Certificates ->最后勾上 Accept non-truste ...
- AS基本设置
1,点开as之前应该做的事 很多人一定会在这个界面卡顿很久,其实这是as在检测更新.所以我们在点开as之前先修改它的配置文件,让它不再更新. 找到你安装as的目录,进入bin文件夹找到idea.pr ...