2012-11-02 75 views
-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位。

在此先感謝!

+1

你檢查了'QIODevice :: errorString()'的輸出嗎? – adi

+2

也許文件正在使用中?你關閉了QProcess實例嗎? – opc0de

+0

嘗試使用':: open'或':: fopen' C庫函數打開文件,然後檢查函數的返回值,全局變量'errno'和'strerror(errno)'返回的C字符串。這樣你會得到更準確的錯誤信息...至少在Unix上,不是100%確定Windows/mingw ... – hyde

回答

1

不需要推測,使用QFile::open()時有一個description of error codes。 順便說一句

qDebug() << f.exists(); //output = false 

看來compiled.exe是不是在這個過程中工作目錄,既不也不在路徑上的任何direcotry。提供完整的路徑...