2015-07-20 183 views
-3

我想運行一個外部進程,但此代碼不起作用。qprocess啓動外部程序

QStringList args; 
QString path = "C:\Users\User\Documents\visual studio 2010\Projects\Avito Main\Avito Main\Debug"; 

QProcess* child = new QProcess(); 
child->setWorkingDirectory(path); 
child->start("a.exe",args); 
+3

您是否嘗試設置'「C:\\ Users \\ User \\ Documents \\ visual studio 2010 \\ Projects \\ Avito Main \\ Avito Main \\ Debug」'而不是? – vahancho

+2

當發佈問題時,描述「不起作用」並沒有什麼幫助。總是詳細說明* how * it「不起作用」。你有構建錯誤嗎?然後告訴我們你得到了什麼錯誤。你有運行時錯誤(崩潰)?然後在調試器中運行以查明崩潰並告訴我們它在哪裏以及相關變量的值是什麼。你有意想不到的結果嗎?然後告訴我們實際和預期的結果。還有別的嗎?始終檢查錯誤(大多數函數返回成功/錯誤指示符),並獲取錯誤代碼或消息。 –

+1

[使用QProcess啓動進程](http://stackoverflow.com/questions/2622864/start-a-process-using-qprocess) – demonplus

回答

1

QProcess::setWorkingDirectory設置進程本身的工作目錄;它不會使Qt在此路徑中查找您的可執行文件。

所以你必須要完整路徑傳遞給QProcess::start功能:

QStringList args; 
QString path = "C:/Users/User/Documents/visual studio 2010/Projects/Avito Main/Avito Main/Debug"; 

QProcess *child = new QProcess(); 
child->setWorkingDirectory(path); 
child->start(path + "/a.exe", args); 

另外,還要注意在你的路徑中的「\」字符用於轉義序列。改用「\\」或「/」。