Qt에서 원격 컴파일 시스템을 만들려고합니다. 내가 뭘 하려는지 클라이언트에서 C/C++ 소스를 얻고 서버에서 QProcess를 통해 로컬에서 사용할 수있는 GCC를 호출하고, exe 파일을 만든 다음 클라이언트에게 exe를 다시 전송하는 것입니다. 간단한 권리?Qt에서 네트워크를 통해 exe 파일 전송
exe 파일은 완벽하게 생성되지만 Qt는 파일을 전송하기 위해 배열로 읽을 수 없습니다.
내 코드는 다음과 같습니다 EXE 파일이 많이 존재
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 파일 만 작동하지 않습니다. MSVC v16.00.40219.10을 컴파일러로 사용하여 Windows에서 Qt 4.8.1 32 비트를 사용하고 있습니다.
미리 감사드립니다.
'QIODevice :: errorString()'의 출력을 확인 했습니까? – adi
파일이 사용 중이십니까? QProcess 인스턴스를 닫았습니까? – opc0de
':: open' 또는':: fopen' C 라이브러리 함수로 파일을 열어보고 함수의 반환 값, 전역 변수'errno'와'strerror (errno)'에 의해 반환 된 C 문자열을 확인하십시오. 당신이 더 정확한 에러 메시지를 얻는 그런 식으로 ... 적어도 유닉스에서, 100 % Windows/mingw에 대해서는 확실하지 않다. – hyde