• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

QT/VS--调用matlab的dll文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Matlab生成dll等文件的步骤之前文章里有,下边写一下VS调用MATLAB生成的dll的方法。(QT调用方法一样)

https://www.cnblogs.com/zzzsj/p/14630559.html

C++部分:
创建工程文件,注意:测试环境使用的是64位操作系统,因此务必在x64环境下进行以下配置。(这是与你的matlab版本匹配的,我的matlab安装的是64bit的)

第一步:VC++目录
假设Matlab安装目录为G:\Matlab2016b,这个根据本机安装目录自行调整。

包含目录:G:\Matlab2016b\extern\include
库目录:G:\Matlab2016b\extern\lib\win64\microsoft

第二步:链接器->输入->附加依赖项,添加以下库(都是matlab里的库)
mclmcrrt.lib
libmat.lib
libmx.lib
mclmcr.lib(这个lib缺少经测试也是可以的,但还是先加上吧)

第三步:配置系统变量
“我的电脑”右键,打开“属性”;选择“高级系统设置”;找到系统属性页面的“高级”选项,右下方“环境变量”;页面中下方是系统变量,将Path设置为G:\Matlab2016b\bin\win64

进行完以上配置后,将电脑进行重启(让环境变量生效)。

第四步:重新打开VS2015的项目,将Matlab生成的四个文件放入该项目所在文件夹下。(注意:这就是关键所在,很多blog都没有说明的一点,这里的文件夹指的是Project1\x64\Debug目录下,这个目录下,testmat.dll、testmat.lib、testmat.ctf三个文件缺一不可,如果缺少ctf文件,编译不报错,初始化内存报错,而在Project1\Project1目录下,需要保证testmat.dll、testmat.lib、testmat.h这3个文件)。

第五步:调试–>窗口–>异常设置–>Win32 Exceptions全部不要勾选。

至此完成VS的配置。

下边是测试代码:(我用QT写的,用法一样,凑合看)

void MainWindow::on_pushButton_clicked()
{

    if( !testmatInitialize() )  //testmatInitialize()Matlab自动生成的初始化函数,调用函数之前必须先初始化
    {
        qDebug()<<"fail2";
    }
    qDebug()<<"success";

    mwArray aa(1,1,mxDOUBLE_CLASS,mxREAL);
    mwArray bb(1,1,mxDOUBLE_CLASS,mxREAL);
    mwArray cc(1,1,mxDOUBLE_CLASS,mxREAL);

    double a[1]={12};
    double b[1]={5};
    double c[1];

    aa.SetData(a,1);
    bb.SetData(b,1);
    testmat(1,cc,aa,bb);   //目标函数
    cc.GetData(c,1);
    ui->label->setText(QString::number(c[0]));
}

运行结果:

ps:一个小问题,在主界面上第一次调用函数时,程序输出栏里会出现SetThrowSegvLongjmpSEHFilter(): filter function installed的提示,再调用就不出现了,不知道为什么,无解,百度不到答案。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi设置开机自动启动函数发布时间:2022-07-18
下一篇:
使用matlab画半透明椭圆发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap