QT+Opencv配置+问题:During startup program exited with code 0xc0000135.

这篇博客详细记录了在Qt环境下配置OpenCV的过程,包括解决FFMPEG下载失败的问题和调试时遇到的0xc0000135错误。作者强调首次配置可能出现的各种错误,但一旦成功,后续配置会更加顺利。关键步骤包括设置环境变量,确保cmake、QT、opencv和mingw32-make的正确配置,并注意在cmake生成的lib文件夹中查找缺失的.dll文件。此外,还提供了缺少.dll文件的解决方案,即复制opencv-build的bin目录下的所有.dll文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt添加Opencv模块博客资料

  1. Qt配置OpenCV教程,亲测已试过(详细版)
    严格按照其步骤安装,然后有错继续修正,安装一遍成功后,你会发现,再来安装,根本就没有第一遍那么多错误。第一遍安装就是各种错误。
  2. opencv 编译“FFMPEG: Download failed”解决办法
  3. Qt程序无法启动,debug时提示During startup program exited with code 0xc0000135

入坑总结

  1. 配置好相关环境变量
    cmake、QT、opencv、mingw32-make
  2. 如果有人帮你配置的话,请找人配置,网上装cmake配置opencv一般都是2到3天。
  3. 在cmake"where to build the binaries"文件夹的lib文件夹中会有多个文件,我第一次安装不知怎么就只生成了3个文件,后面重新configure操作一遍才有的。
    在这里插入图片描述
    在这里插入图片描述
  4. 还有很多问题,可能打开了百来个网页。比如:
    在这里插入图片描述
  5. qt构建opencv应用出现During startup program exited with code 0xc0000135.不会提示缺少哪些文件,我这里是debug文件夹下缺少opencv的.dll文件。可以参考Qt程序无法启动,debug时提示During startup program exited with code 0xc0000135,我之前一直以为是我cmake没有配置好opencv,这个在绝大多数教程都没有提及。只要复制opencv的所有.dll。就是在cmake构建的opencv-build的文件下面的 "…opencv-build\install\x64\mingw\bin"所有.dll文件
<think>我们正在解决Ubuntu系统中使用GDB调试程序时,执行`-exec-run`命令后程序退出代码为126的问题。退出代码126通常表示“无法执行程序”,即系统无法执行指定的程序。这可能是由于以下几种原因:1.程序文件本身的问题,如权限不足、文件损坏或格式错误。2.程序依赖的动态链接库缺失或权限问题。3.程序本身是脚本,但缺少解释器(shebang指定的解释器不存在或不可执行)。解决方案:步骤1:检查程序是否具有可执行权限使用`ls-l`命令检查程序的权限,确保有执行权限(x标志)。如果没有,使用`chmod+x程序名`添加执行权限。步骤2:检查程序的文件格式使用`file程序名`查看文件类型,确保是适合当前系统的可执行文件(如ELF格式)。如果不是,可能是编译过程出了问题。步骤3:检查程序依赖的库使用`ldd程序名`查看程序依赖的库,确保所有库都存在且可访问。如果有缺失的库,需要安装相应的库或设置`LD_LIBRARY_PATH`环境变量。步骤4:如果程序是脚本如果程序是脚本(如Shell脚本、Python脚本等),请确保脚本第一行的shebang(如`#!/bin/bash`)指定的解释器存在且可执行。步骤5:尝试直接运行程序在GDB之外直接运行程序,看是否出现同样的错误。直接运行可能会给出更明确的错误信息。步骤6:在GDB中设置环境变量有时候,程序依赖的环境变量在GDB环境中可能未设置。可以在GDB中使用`setenvironment`命令设置必要的环境变量。步骤7:使用strace跟踪使用`strace`工具运行程序,查看系统调用的错误信息。例如:`strace./程序名`。步骤8:检查程序是否被篡改或损坏如果程序是从网络下载的,请检查其完整性。或者重新编译程序。步骤9:检查磁盘空间和inode使用`df-h`和`df-i`检查磁盘空间和inode是否充足,因为磁盘空间不足也可能导致执行失败。步骤10:检查程序是否在可执行路径上如果程序不在当前目录,而是通过路径指定,请确保路径正确。在GDB中可以使用`setargs`来设置程序参数。由于问题描述中提到了`-exec-run`,这可能是通过GDB的MI接口(MachineInterface)执行的。在GDB命令行中,我们通常使用`run`命令,而`-exec-run`是其对应的MI命令。因此,上述解决方案同样适用于通过MI接口使用GDB的情况。注意:在GDB中,我们也可以使用`showargs`查看当前设置的参数,使用`infoproc`查看进程信息等。下面是一个示例,展示如何在GDB中设置环境变量和参数:```gdb#启动GDBgdb./your_program#在GDB中设置环境变量(gdb)setenvironmentLD_LIBRARY_PATH/path/to/libs#设置程序参数(gdb)setargsarg1arg2#运行(gdb)run```如果问题仍然存在,请提供更多的上下文信息,例如程序的类型(C/C++编译的程序?脚本?)、如何编译的、运行环境等。相关问题:1.如何在GDB中设置环境变量?2.如何使用`ldd`检查程序依赖的库?3.如何为程序添加可执行权限?4.如何查看程序的退出代码?5.在Ubuntu中如何安装缺失的共享库?</think>### Ubuntu GDB调试程序退出代码126的解决方案 程序退出代码126表示**无法执行程序**("Permission denied or interpreter not found"),通常由以下原因导致: #### 核心原因分析 1. **可执行文件权限问题**:程序文件缺少执行权限[^1] 2. **脚本解释器缺失**:脚本文件缺少有效的shebang解释器 3. **文件系统问题**:文件系统挂载选项限制执行权限 4. **动态链接库问题**:依赖库缺失或权限错误 --- ### 分步解决方案 #### 步骤1:检查文件执行权限 ```bash ls -l your_program # 查看权限 chmod +x your_program # 添加执行权限 ``` - 确认输出包含`-rwxr-xr-x`权限标志 - 如果使用`sudo`编译的程序,尝试:`sudo chown $USER your_program` #### 步骤2:验证文件类型 ```bash file your_program # 检查文件类型 ``` - ELF可执行文件应显示:`ELF 64-bit LSB executable, x86-64...` - 脚本文件需确认第一行有有效解释器(如`#!/bin/bash`) #### 步骤3:检查脚本解释器 ```bash head -1 your_script # 查看shebang行 which python3 # 验证解释器路径 ``` - 修正无效解释器路径:`sed -i '1s|.*|#!/usr/bin/env python3|' your_script` #### 步骤4:检查文件系统权限 ```bash mount | grep " / " # 查看根分区挂载选项 ``` - 如果显示`noexec`,需重新挂载:`sudo mount -o remount,exec /` #### 步骤5:验证动态链接库 ```bash ldd your_program # 检查依赖库 ``` - 修复缺失库: ```bash sudo apt install libc6-dev # 安装基础库 export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH # 临时添加库路径 ``` #### 步骤6:在GDB中设置环境 ```gdb (gdb) show environment # 查看环境变量 (gdb) set exec-wrapper env 'LD_LIBRARY_PATH=/custom/libs' # 设置库路径 (gdb) run ``` #### 步骤7:使用`strace`诊断 ```bash strace -f -o debug.log ./your_program # 生成系统调用日志 grep EACCES debug.log # 查找权限错误 ``` --- ### 典型修复案例 ```bash # 案例:Python脚本因解释器路径错误导致126 $ head -1 script.py #!/usr/bin/python # 但系统只有python3 # 修复: $ sed -i '1s|python|python3|' script.py $ chmod +x script.py $ ./script.py # 成功执行 ``` --- ### 相关问题 1. 如何在GDB调试时设置环境变量解决库加载问题? 2. Linux中`noexec`挂载选项会导致哪些执行问题? 3. 如何诊断动态链接库缺失导致的程序启动失败? 4. Shell脚本的shebang行有哪些常见错误类型? 5. 当程序在普通终端可运行但GDB中失败时,如何排查? [^1]: Unix/Linux系统中,执行权限由文件模式中的`x`标志位控制。当内核尝试执行无`x`权限的文件时,会返回`EACCES`错误并触发126退出码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值