案子
- 我的 Qt 应用程序通过 QFile 创建一个文件
- 我打算用dll来读取这个文件
症状
- dll 不能使用它,因为它被QAppilcation占用了
试图
- 我尝试使用 file.close() 来释放文件,但不起作用;
- 我尝试了其他应用程序来读取这个文件,与被占用的症状相同,这意味着 dll 很好。
那么,我该怎么做才能释放一个已经被 QFile 创建和关闭的文件呢?
释放 Qt 文件
void MainWindow::creatFile(){
QFile file("1.dat");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return ;
if(!file.exists())
return;
QTextStream out(&file);
out << "test" <<endl;
out.flush();
file.close(); // .~QFile() is not needed at all.
return;
}
将 QString 转换为字符(Fortran)
typedef void (* myfun)(char string[255]); //How Qt pass character to Fortran dll
//QString-> std::string -> char*
std::string fileName_std = fileName.replace("/","\\").toStdString();
const char* fileName_cstr = fileName_std.c_str();
char fileName_For90[255];
int length = sizeof(fileName_For90);
//fill the left nulls of char with blanks which are required in Fortran
strcpy(fileName_For90,fileName_cstr);
for(int i = strlen(fileName_For90); i < length; i++){
fileName_For90[i] = ' ';
}