#include "mainwindow.h" #include "ui_mainwindow.h" #include <QSqlDatabase> #include <QMessageBox> #include <QDebug> #include<QSqlError> #include<stdio.h> #include<stdlib.h> #include <QFileDialog> #include"mat.h" #include"matrix.h" QSqlDatabase db; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // db = QSqlDatabase::addDatabase("QMYSQL"); // db.setHostName("localhost"); // db.setPort(3306); // db.setDatabaseName("demo"); // db.setUserName("root"); // db.setPassword("123456"); // bool ok = db.open(); // if (ok){ // QMessageBox::information(this, "infor", "success"); // } // else { // QMessageBox::information(this, "infor", "open failed"); // qDebug()<<"error open database because"<<db.lastError().text(); // } /*------------------------------------导入.mat文件-------------------------------------------------*/ //打开选择文件对话框,获取文件路径 QString File_Path = QFileDialog::getOpenFileName(this, "open","../","source(*.cpp *.h *.DAT *.mat);;Text(*.txt);;all(*.*)"); QByteArray ba = File_Path.toLatin1(); const char *rootFile = ba.data(); MATFile *pmatFile = matOpen(rootFile, "r"); if (pmatFile == NULL) { QMessageBox::warning(NULL,tr("文件打开失败"),tr("mat文件打开失败"),QMessageBox::Yes); return; } // // 获取文件中变量var; // mxArray* Array1 = matGetVariable(pmatFile, "RBR"); //先与变量绑定 // mxArray* pF = mxGetField(Array1,0,"data"); //再获取其中域的数据 // matClose(pmatFile); // // 获取矩阵数据行数; // int row = mxGetM(pF); // qDebug() << row<<endl; // // 获取矩阵数据列数; // int column = mxGetN(pF); // qDebug() << column <<endl; } MainWindow::~MainWindow() { delete ui; }这段代码为什么会显示程序异常介乎是
时间: 2024-03-13 07:42:37 浏览: 112
moc.exe 解决moc过程中不支持处理enum包含#include头文件的语法。
5星 · 资源好评率100%
根据你提供的代码,程序异常结束的原因可能是由于在使用MATLAB API读取MAT文件时出错。
具体而言,当程序运行到以下代码时:
```
MATFile *pmatFile = matOpen(rootFile, "r");
if (pmatFile == NULL) {
QMessageBox::warning(NULL,tr("文件打开失败"),tr("mat文件打开失败"),QMessageBox::Yes);
return;
}
```
会尝试打开用户选择的MAT文件并读取其内容。如果打开文件失败,即pmatFile为NULL时,程序会弹出一个警告框,并在控制台输出"文件打开失败"。这时程序会直接结束,因此会显示程序异常结束。
可能的原因有:
1. 用户选择的MAT文件不存在或者路径不正确。
2. 用户选择的MAT文件是用较高版本的MATLAB生成的,而代码使用的MATLAB版本较低,导致无法读取MAT文件。
3. 其他读取MAT文件时出现的错误,例如MAT文件格式不正确等。
建议检查一下MAT文件的路径是否正确,并确保文件存在。此外,还需要注意MATLAB版本的兼容性问题。如果MAT文件是用较高版本的MATLAB生成的,而代码使用的MATLAB版本较低,可能会导致程序无法正常读取MAT文件。如果以上方法仍然无法解决问题,可以尝试输出更详细的错误信息,以便更好地找到问题所在。
阅读全文