修改$QTDIR/mkspecs目錄下的符號(hào)鏈接default.將其指向linux-g++
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比龍勝網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式龍勝網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋龍勝地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
$QTDIR是路徑,具體要看你把QT裝到什么地方和QT本身的版本,一般是/usr/lib[64]/qt4
修改default符號(hào)鏈接的作用是讓qmake在生成Makefile的時(shí)候?qū)akefile文件中的編譯器變量$CC與$CXX賦值成gcc和g++
圖形界面下,直接下載qtcreate,libqt4-dev,qt5defaule-dev 第一個(gè)是編輯軟件,后兩個(gè)是庫,如需其他另外找。命令行模式的話,不知道怎么在沒有圖形界面下運(yùn)行對(duì)話框的程序,命令行模式運(yùn)行qt命令行格式的,直接qmake,make。就可以了。里面那個(gè)沒有后綴的就是運(yùn)行程序了,./程序名 運(yùn)行 不行就加權(quán)限 chmod +x ***.
QString program = "./path/to/Qt/examples/widgets/analogclock";
QStringList arguments;
arguments "-style" "motif";
QProcess *myProcess = new QProcess(parent);
myProcess-start(program, arguments);
// 修改系統(tǒng)時(shí)間很簡單 // 采用QProcess來實(shí)現(xiàn)QProcess::exectu("date 031210252014"); // 0312 表示3月12日,1025表示當(dāng)前時(shí)分QProcess::exectu("hwclock -h); // 同步系統(tǒng)時(shí)間Qprocess::exectu("sync"); // 保存配置
qt 調(diào)用linux系統(tǒng)命令修改系統(tǒng)時(shí)間,直接輸入代碼修改系統(tǒng)時(shí)間即可。
有個(gè)這類?QProcess?
QProcess?p(0);
QString?command?=?"";
QStringList?args;
QString?strTemp?=?"";
QStringList?tmpList;
/**
*?調(diào)用?hostname?命令?獲取機(jī)器名
================================================================?*/
QString?hostname?=?"";
command?=?"hostname";
args.clear();
p.start(?command,args?);
p.waitForFinished();
strTemp?=?QString::fromLocal8Bit(?p.readAllStandardOutput()?);
hostname?=?strTemp.replace(?"\n","").trimmed();
qDebug()"hostname:"?hostname;
出問題的exe名稱為TestApp.exe,在Visual Studio下編譯運(yùn)行都正常,但無法直接點(diǎn)擊exe運(yùn)行。報(bào)錯(cuò)為(應(yīng)用程序無法正常啟動(dòng)(0xc000007b)。請(qǐng)單擊“確定”關(guān)閉應(yīng)用程序)
本人環(huán)境:基于visual studio IDE下的QT編譯器,共有四種,在 qt-版本號(hào) 文件夾下。
我的問題解決步驟如下:
1.看準(zhǔn)自己項(xiàng)目的編譯環(huán)境
我電腦雖然是64位的,但是編譯器環(huán)境是32位的,故之后所有都需要以32位為標(biāo)準(zhǔn)
由于是Visual Studio ,所以采用下面文件夾中的msvc2017環(huán)境進(jìn)行編譯(沒有標(biāo)注64位就是32位)
2.添加系統(tǒng)環(huán)境變量
打開控制面板搜索環(huán)境變量,對(duì)系統(tǒng)path進(jìn)行更改
按照上一步的環(huán)境進(jìn)行配置?。?!不要添加冗余路徑,一項(xiàng)即可?。?/p>
PS:多項(xiàng)也可以,但是要在IDE中選擇正確的default編譯器,不然系統(tǒng)會(huì)搞混64和32位的dll
3.進(jìn)入qt自帶的命令行中
開始框中搜索 → 選擇合適的環(huán)境(比如我是MSVC 2017 32-bit)→ 進(jìn)入目標(biāo)exe程序所在文件夾
輸入命令
windeployqt xxx(目標(biāo)exe名稱)
復(fù)制
PS:該命令(windeployqt)若添加了系統(tǒng)Path后,也可以直接在系統(tǒng)cmd中運(yùn)行,前提是:環(huán)境Path只有適合自己項(xiàng)目的那一項(xiàng)?。。╫nly 32 or 64)??否則系統(tǒng)會(huì)弄混。。。然后就又失敗鏈接了qaq
此時(shí),在exe的文件夾下面會(huì)多出很多文件夾和dll文件,表明已經(jīng)link成功
再次強(qiáng)調(diào):不同位數(shù)的編譯器鏈接出來的dll不同!一定一定要適合自己的程序