matlab将文件打包成dll供QT调用

2023年7月11日 21:54 ry 454

最近我在写qt项目时遇到了一个问题,我要将掌纹图片截取感兴趣区域(ROI),而截取的这块代码是师兄传承下来的,基于matlab编写的,代码超过百行,我第一个想法就行想强转位qt代码,尽管有chatgpt的加持,但效果还是一言难尽,因此这个想法立马放弃,后面发现matlab可以自己将文件通过mingw编译器进行编译位dll文件,这样我们qt直接调用即可,话不多说这里首先下载matlab2019a,需要下载的可以看我其他的文章,有matlab安装包以及教程,我的qt版本是5.13的,这里说下,我采了巨坑,之前我用的qt5.7版本的,由于qt5.7版本默认的编译器mingw是32位的,而matlab给文件打包的mingw编译器是64位的(至少对于matlab2019a是这样),导致打包成的dll,qt调用时直接报接口函数不存在的问题,开始我想讲matlab降低版本,发现还是不行,坑太多,折磨了我2天后我直接升级qt版本,直接大换血,虽然代价是opencv环境得重新下载安装和编译,反正推导重来,不慌。安装qt5.13时记得勾选mingw64啊!!!!!!!。为了保险起见,我都装了,安装完成后如图所示

接下来我们看matlab这块了,这里我传递了2个路径参数,关于读取和保存图片的2个路径,然后再命令窗口输入以下命令

mbuild -setup

这个命令查看是否有mingw64编译环境,爆红表示没有,否则有,可以看我的显示没有没有的话可以自己安装mingw64或者在matlab官网中下载mingw-w64,后者十分慢,我比较推荐前者,安装包链接:https://pan.baidu.com/s/1HLMXhYfx-eMWM21xzuzBrQ?pwd=dib7 提取码:dib7下载后到环境变量配置下路径,如下所示,这是我安装后自己配置的配置好了接下来转到matlab,命令行使用命令:

setenv('MW_MINGW64_LOC','C:\Users\14499\Desktop\mingw64')

注意,这里相比你环境变量,少了bin这个哈。然后再次执行命令

mbuild -setup

就可以找到我们自己的ming64了,如图所示

由于我们要编译成c++,这里我们选择第一种命令,即

mex -setup C++ -client MBUILD

执行上面命令后看到,按照下面方式进行点击后会弹出一个界面,按照如下步骤进行操作即可等待打包,打包成功后会自动导航文件夹那里,可以看到进入这个文件夹,我们只要dll,h,lib这3个后缀名的文件即可,复制到我们的qt项目。转到qt,到pro文件配置下即可,如图所示然后我们到mainwindow.cpp主文件,引入刚才我们打包的头文件即可,这个就不用说了,接下来我们看如何调用dll这个接口,如下所示完美手工!!!!!!!!!!!!!!!!!!!!!!!!

如果上述代码帮助您很多,可以打赏下以减少服务器的开支吗,万分感谢!

欢迎发表评论~

点击此处登录后即可评论


评论列表
2023年11月17日 14:35 ry: 回复
本人承接各种软件定制,数据采集,接口搭建,网站开发,环境配置的杂活,需要的可以联系我 qq:1449917271 微信:liuyoudyping


赣ICP备2021001574号-1

赣公网安备 36092402000079号