-1
我正在嘗試在Qt中創建一個遠程編譯系統。我試圖做的是從客戶端獲取C/C++源代碼,並通過服務器上的QProcess調用本地可用的GCC,創建exe文件,然後將該exe文件傳回客戶端。簡單的權利?在Qt中通過網絡傳輸exe文件
exe文件正在完美生成,但Qt只是無法將文件讀入數組來傳輸它。
我的代碼是:
QByteArray arr;
qDebug() << "To Client: exe";
QFile f("compiled.exe");
qDebug() << f.exists(); //output = false
QString path = QDir::toNativeSeparators(QFileInfo(f).absoluteFilePath());
qDebug() << path; //perfect path is coming
qDebug() << f.open(QIODevice::ReadOnly); //output = flase
arr = f.readAll(); // size of arr is 0
f1.close();
client->write(arr); //zero bytes written
儘管exe文件非常多本,我得到這樣的輸出。我嘗試了與其他文件在同一個目錄中,它的工作原理絕對完美。只有EXE文件不會工作。 我在使用MSVC v16.00.40219.10作爲編譯器的Windows上使用Qt 4.8.1 32位。
在此先感謝!
你檢查了'QIODevice :: errorString()'的輸出嗎? – adi
也許文件正在使用中?你關閉了QProcess實例嗎? – opc0de
嘗試使用':: open'或':: fopen' C庫函數打開文件,然後檢查函數的返回值,全局變量'errno'和'strerror(errno)'返回的C字符串。這樣你會得到更準確的錯誤信息...至少在Unix上,不是100%確定Windows/mingw ... – hyde