-1

Qt でリモート コンパイル システムを作成しようとしています。私がやろうとしているのは、クライアントから C/C++ ソースを取得し、サーバー上の QProcess を介してローカルで利用可能な GCC を呼び出し、exe ファイルを作成してから、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 ビットを使用しています。

前もって感謝します!!

4

1 に答える 1

1

推測する必要はありません。を使用する場合のエラーコードの説明がありますQFile::open()。ところで

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

compiled.exeプロセスの作業ディレクトリにも、パスのディレクトリにも存在しないようです。完全なパスを提供します...

于 2012-11-02T09:44:44.197 に答える