-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