链接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包后 进行部署 >>>> 报 ...
随机推荐
- Oracle11g RAC+DG搭建
项目环境准备 3.1虚拟机配置 版本选择 注意Linux操作系统.此次项目我选择的版本是Oracle Enterprise Linux 5.4 内存的设置 本人电脑物理内存8G,由于此次实验要开三台虚 ...
- [洛谷P1501] [国家集训队]Tree II(LCT模板)
传送门 这是一道LCT的板子题,说白了就是在LCT上支持线段树2的操作. 所以我只是来存一个板子,并不会讲什么(再说我也不会,只能误人子弟2333). 不过代码里的注释可以参考一下. Code #in ...
- Struts2理解?
(1)Struts2是一个基于MVC设计模式的Web应用框架,在MVC设计模式中Struts2作为控制器(Controller)来建立模型与视图的数据交互. Struts 2以WebWork为核心,采 ...
- 记一次elastic-job使用
当当的elastic-job定时任务 业务场景是定时从微信取accesstoken和jsticket,因为都只有7200秒的有效时间,所以设置了定时任务,定时将得到的数据存到redis缓存中 问题1: ...
- 删除oracle居家必备
- python第一个程序:计算体脂率
主要是为了提醒自己要——保重 height = input('请输入身高(m):') weight = input('请输入体重(KG):') age = input('请输入年龄:') sex = ...
- dnSpy
https://github.com/0xd4d/dnSpy 下载压缩包之后,解压,发现目录里面有3个exe文件 需要用管理员运行dnSpy.exe,然后打开exe文件,设置好断点,然后start 使 ...
- Emacs 浏览网页
Emacs 浏览网页非常方便,还可以忽略掉那些烦人的小广告.特别是在看小说 的时候~ 在之前了解如何通过Emacs浏览网页时,大部分人使用的是w3m,折腾了半天,没能成功.后来无意间发现 ,有EWW ...
- Prism中在Region中注入匹配问题
简单实例说明 [Export] public partial class TitleView : UserControl { public TitleView() { InitializeCompon ...
- SuperSocket 学习笔记-客户端
客户端: 定义 private AsyncTcpSession client; 初始化 client = new AsyncTcpSession(); client.Connected += Clie ...