2012-11-02 27 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。提供完整的路径...