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平台的!最後就是你的系統有問題了!