前言:
前面已经实现了在vc中调用matlab生成的动态库,请参考:vc中调用matlab生成的动态库
现在在前面已经生成好的matlab动态库的基础上,在qt中调用matlab生成的动态库。生成matlab动态库,请参考:vc中调用matlab生成的动态库
例程下载:
调用步骤:
- 新建qt widget工程;
- 拷贝matlab编译生成myadd.h和myadd.lib文件到QT工程目录下;
- 拷贝matlab生成的myadd.dll和myadd.ctf(必须要有,负责运行时初始化dll库会失败)文件到QT可执行文件所在目录下;
- 在工程文件*.pro中增加如下几行内容:
- 编写测试代码:
int main(int argc, char *argv[])
{
...
if (!myaddInitialize())
{
std::cout << "Could not initialize the algorithm.\n";
return 0;
}
...
}
void MainWindow::on_pushButton_clicked()
{
mwArray x(1, 1, mxDOUBLE_CLASS);
mwArray y(1, 1, mxDOUBLE_CLASS);
x(1, 1) = ui->lineEdit->text().toDouble();
y(1, 1) = ui->lineEdit_2->text().toDouble();
mwArray a(1, 1, mxDOUBLE_CLASS);
myadd(1, a, x, y);
double aaa = a.Get(1,1);
ui->label_2->setText(QString("%1").arg(aaa));
return;
}
- 编译;
- 直接在qt环境下运行,会跳到dissambler 页面,如下图所示,可以不用管这个问题,因为在qt环境外直接运行可执行文件可以正常执行下去。
- 运行结果: