qt编译一直不停止
① QT的代码编译没错,但是debug模式下会异常终止,在release模式下就没问题,请问是什么情况
qt代码在release模式下编译之后,会偶先题目所述现象,但是debug模式下确没事,单独运行release文件夹中的exe也可以,唯独在qtcreator中运行时不行,网络之后的答案基本是环境问题,巴拉巴拉,但是他也没说具体是什么环境问题,这叫我怎么排查?!
不过就在刚刚我又出现了这个问题,这种问题一般出现在如下情况:
1、添加一些新的模块或代码中需要新的qt的dll库等;
2、把别人的代码拉倒本地后再编译(别人的库包括上一条所述的内容);
qt的release模式是需要单独去寻找dll或相关链接库的,如果它自己找不到,就会爆出标题所述的内容,此时你可以检查你的环境(但是就像我之前说的,我也不知道我要检查什么环境!),另外一种有效的做法就是呢:
安装qt后会随着按照一个命令行工具(和windows自带的CMD类似),叫做 Qt 5.7 for Desktop (MinGW 5.3.0 32bit),在开始目录里打开这个工具,如下图:
在命令行中进入到,编译后的exe存放的目录中,然后输入命令:
windeployqt xxx.exe
其中xxx.exe就是你生成的exe名称,这条命令会把exe相关的内容解析出来,你会在文件夹中看到很多qt的相关dll,这些都是依赖性,有了这些依赖项之后,再返回运行qt creator就能成功运行啦~~~~
当然了,这种方式也适用于对应用打包,把exe单独放到一个文件夹,运行上述命令,这个文件夹就可以在没有qt的环境的电脑中运行了。
② OSX系统用QT编译cmakelist文件时出错 在这无限循环
Qt在编译时,需要首先使用uic.exe编译UI文件,通过moc.exe处理Q_OBJECT之类的宏,当然你可以去掉这些定义,否则就需要加上:#COMPILEUIsSET(UISmnwindow)FOREACH(ui_file${UIS})SET(TMP_IN"${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")SET(TMP_OUT"${PROJECT_BINARY_DIR}/ui_${ui_file}.h")EXECUTE_PROCESS(COMMAND${QT_FOLDER}/bin/uic.exe-o${TMP_OUT}${TMP_IN})MESSAGE(STATUS"EXEC=${QT_FOLDER}/bin/uic.exe-o${PROJECT_BINARY_DIR}/ui_${ui_file}.h${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")ENDFOREACH(ui_file)#CREATEMOCSET(HEADERSmainwindow)FOREACH(header_file${HEADERS})SET(TMP_IN"${PROJECT_SOURCE_DIR}/inc/${header_file}.h")SET(TMP_OUT"${PROJECT_BINARY_DIR}/moc_${header_file}.cpp")EXECUTE_PROCESS(COMMAND${QT_FOLDER}/bin/moc.exe-o${TMP_OUT}${TMP_IN})SET(MOCS${MOCS}${PROJECT_BINARY_DIR}/moc_${header_file}.cpp)MESSAGE(STATUS"EXEC=${QT_FOLDER}/bin/moc.exe-o${PROJECT_BINARY_DIR}/moc_${header_file}.cpp${PROJECT_SOURCE_DIR}/inc/${header_file}.h")ENDFOREACH(header_file)freec#.netqrcreator这里要注意的是:EXECUTE_PROCESS在COMMAND后面不能加引号,命令直接写,否则执行的程序也不会出错,但也不会正常运行.
③ 为什么我的qt5.4编译以后就没反应了,也不出现控制台程序,也没有生成.exe文件
这是再正常不过的事了,程序执行完(简单程序时间可忽略)就自动关闭了,想让它停住可加<cstdlib>头文件并在return 0;语句前加一句system("pause");如果不想看到“请按任意键继续”可换为
system("pause>nul");
另外一种做法:(不需加其他头文件,但要<iostream>头文件)在return 0;前加cin.get()(这句话的作用是读取一个字符,包括换行符),这时随便按一个键就会退出程序。
你如果是想学习C++语法,在DEV-C++里编译运行就可以了,没有必要自己去打开exe文件。
④ OSX系统用QT编译cmakelist文件时出错 在这无限循环
循环冗余检查的意思就是告诉你 某个区域读不出来 然后无限循环的读那个区域,直到时间用完 可能是碟或者光驱问题 个人更趋向与碟的问题 你看下碟是否有划痕 或者在别人的机器上试下 如果是正版而且不是你光驱问题 那么你可以索赔的
⑤ QT编译错误,怎么解决
项目->构建设置,把中文路径改为英文路径 ,记得清理之后再重新构建哦
⑥ 为什么这个Qt程序编译不了
原因:Qt不支持中文的路径,把源码的路径全部改成英文即可解决问题。
⑦ 为什么我的qt编译程序时不报错也不运行
首先确定的环境有搭建好!然后确定你编译的程序不是arm的给
开发板
用的,而是X86平台的!最后就是你的系统有问题了!