QtCreate运行程序和直接双击运行程序的区别!
来源:互联网 发布:大数据分析挖掘需求 编辑:程序博客网 时间:2024/04/30 14:18
Qt编程时有时会遇见,有时直接点击可以运行,而在QtCreate里运行却异常退出的情况(或者相反)?
我们来探究下,QtCreate里点击运行,和直接双击程序运行的区别?
为啥有区别?
父进程不同(所以继承的环境变量不同)
直接双击,继承的是系统的PATH变量(不知道win下有没有shell这玩意,就这么理解吧)
在QtCreate点击运行,程序的父进程是QtCreate
QtCreate启动时会继承系统的PATH环境变量,所以在你启动QtCreate后,去添加的系统环境变量,对当前已打开的QtCreate是无效的
所以此时在其中启动程序是找不到库的,也就运行不了,而直接双击程序却是可以运行的
出现原因:在我QtCreate打开后,我去配置了OpenCV的库,出现直接可以运行,QtCreate中异常退出
解决方法:重启QtCreate就行了
如果如上所说,同时使用mingw和vs 的Qt库的同学肯定有疑问了?
因为这两个库编译的程序,是不能兼容对方的库的,如果说QtCreate继承的系统PATH的话
为什么我QtCreate中可以运行,而有时直接双击库函数定位不正确呢?
为什么我在QtCreate中切换发布版本,使用不同编译器时,点击运行,程序都能正常启动的?
原因:
在切换不同发布版本时,Qt的系统环境变量就切换了(例如QT_DIR, QT_INSTALL_LIBS 和 QT_INSTALL_BINS)
同时QtCreate会根据自身的环境变量情况,在自己的PATH最前面加上相应编译器相关的Qt库路径(注意这个最前面)
由于在QtCreate中运行程序,继承的是QtCreate的PATH,而其又在最前面加了相应编译器的Qt库,所以
首先找的肯定是那个Qt库,所以就肯定可以运行
而直接双击运行,就要看你系统PATH配置的是那个编译器的Qt库了
尝试打印这个程序的环境变量
mingw
PATH发现在比系统的PATH环境变量多了(是加到最前面的,可见其心机)
D:\QtSDK\mingw\bin;D:\QtSDK\Desktop\Qt\4.8.0\mingw\lib;D:\QtSDK\Desktop\Qt\4.8.0\mingw\bin;
vs2010
PATH前多了
D:\QtSDK\Desktop\Qt\4.8.0\msvc2010\lib;D:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin;
还有些其他的
具体原因
源码Qt4RunConfiguration.cpp,可能包含原因,大概扫了一眼,貌似会基于原来的环境变量,改变运行是的环境变量
懒得看了,浪费时间
我们来探究下,QtCreate里点击运行,和直接双击程序运行的区别?
为啥有区别?
父进程不同(所以继承的环境变量不同)
直接双击,继承的是系统的PATH变量(不知道win下有没有shell这玩意,就这么理解吧)
在QtCreate点击运行,程序的父进程是QtCreate
QtCreate启动时会继承系统的PATH环境变量,所以在你启动QtCreate后,去添加的系统环境变量,对当前已打开的QtCreate是无效的
所以此时在其中启动程序是找不到库的,也就运行不了,而直接双击程序却是可以运行的
出现原因:在我QtCreate打开后,我去配置了OpenCV的库,出现直接可以运行,QtCreate中异常退出
解决方法:重启QtCreate就行了
如果如上所说,同时使用mingw和vs 的Qt库的同学肯定有疑问了?
因为这两个库编译的程序,是不能兼容对方的库的,如果说QtCreate继承的系统PATH的话
为什么我QtCreate中可以运行,而有时直接双击库函数定位不正确呢?
为什么我在QtCreate中切换发布版本,使用不同编译器时,点击运行,程序都能正常启动的?
原因:
在切换不同发布版本时,Qt的系统环境变量就切换了(例如QT_DIR, QT_INSTALL_LIBS 和 QT_INSTALL_BINS)
同时QtCreate会根据自身的环境变量情况,在自己的PATH最前面加上相应编译器相关的Qt库路径(注意这个最前面)
由于在QtCreate中运行程序,继承的是QtCreate的PATH,而其又在最前面加了相应编译器的Qt库,所以
首先找的肯定是那个Qt库,所以就肯定可以运行
而直接双击运行,就要看你系统PATH配置的是那个编译器的Qt库了
尝试打印这个程序的环境变量
mingw
PATH发现在比系统的PATH环境变量多了(是加到最前面的,可见其心机)
D:\QtSDK\mingw\bin;D:\QtSDK\Desktop\Qt\4.8.0\mingw\lib;D:\QtSDK\Desktop\Qt\4.8.0\mingw\bin;
vs2010
PATH前多了
D:\QtSDK\Desktop\Qt\4.8.0\msvc2010\lib;D:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin;
还有些其他的
具体原因
源码Qt4RunConfiguration.cpp,可能包含原因,大概扫了一眼,貌似会基于原来的环境变量,改变运行是的环境变量
懒得看了,浪费时间
- QtCreate运行程序和直接双击运行程序的区别!
- 编译器运行程序和直接双击运行程序一个成功一个失败的问题说明
- 双击运行JAVA程序
- 双击运行Java程序
- javaSWing程序命令行和IDE运行没有问题,打包成jar后直接双击运行部分功能不行
- 双击jar文件运行程序
- 双击jar文件运行程序
- 双击jar文件运行程序
- 直接运行Python程序
- WINCE系统启动直接运行自己的程序
- WINCE系统启动直接运行自己的程序
- WINCE系统启动直接运行自己的程序
- Visual C++中按下F5运行与直接双击exe运行的区别
- Android程序运行的Dalivk和Java程序运行的JVM虚拟机的区别?
- Win7/Win8下双击运行jar程序的方法
- Win7/Win8下双击运行jar程序的方法
- 直接运行内存中的程序
- 直接运行内存中的程序
- jQuery Plugin 好用的jQuery插件
- 计算机之间的数据通讯
- C#中File静态类及其常用静态方法实例详解
- mongo 语句
- Oracle存储过程定义和优点与函数区别
- QtCreate运行程序和直接双击运行程序的区别!
- 美迪吐血放送建站的经验总结
- Struts2结合DisplayTag、DbUtils实现查询分页、导出Excel
- 数据库质疑修复总结 For SQL Server 2000/2005/2008/2008R2
- 将Oracle 中的blob导出到文件中
- extjs4.1 form field clear
- 使用clone( )和Cloneable接口
- c++ STL小记
- 黑马程序员——JAVA helloword程序说明