在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Matlab生成dll等文件的步骤之前文章里有,下边写一下VS调用MATLAB生成的dll的方法。(QT调用方法一样) https://www.cnblogs.com/zzzsj/p/14630559.html C++部分: 第一步:VC++目录 包含目录:G:\Matlab2016b\extern\include 第二步:链接器->输入->附加依赖项,添加以下库(都是matlab里的库) 第三步:配置系统变量 进行完以上配置后,将电脑进行重启(让环境变量生效)。 第四步:重新打开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的提示,再调用就不出现了,不知道为什么,无解,百度不到答案。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论