LabVIEW与MATLAB联合编程之使用dll库文件连接
最近做东西的时候用到了在LabVIEW里面调用MATLAB的分类模型,辗转多篇文章终于搞定,特此记录,以供参考。
编程环境:Windows11
,MATLAB2020a
,LabVIEW2019
,VisualStudio2022
,全是64位。
我这里重点记录了安装编译器的过程,打包与LABVIEW调用dll的过程都有参考的链接。
一、MATLAB程序打包至dll
MATLAB程序打包主要分为安装编译器与打包两部分。
1 MATLAB安装编译器
从matlab程序到dll文件需要使用编译器,在此之前最好先安装有VisualStudio
,有些c++的库也会有用,没有的话打包出来的文件有可能会有问题,之后最主要参考的就是这篇【MATLAB】如何安装配置MinGW-w64 C/C++编译器,这里再把我的过程详细记录一下。
1、打开MATLAB,选择“附加功能”里的“获取附加功能”:
2、在附加功能资源管理器的搜索栏里面搜索MinGW
:
3、选择最上面的这一个:
4、根据自己MATLAB
的版本选择进入对应的链接:
5、点击downloads:
6、页面往下拉,找到Sources这部分,点击SourceForge链接:
7、进去之后点一下这里,进去上一层目录:
8、根据自己的需求选择合适的版本,这里我选择的是x86_64-posix-seh
,其中x86_64
是指64位系统,posix
同样是应用于64位,seh
相比于sjij性能更强,但稳定性不如:
9、解压完成后把解压完成的文件直接放到C盘的根目录下面:
10、右键桌面上的计算机,选择属性-高级系统设置-高级-环境变量:
11、点击新建,然后把MW_MINGW64_LOG
作为变量名,C:\mingw64\bin
作为变量值,点击确定:
12、找到系统变量里面的Path,点击编辑:
13、点击新建,将C:\mingw64\bin
加进去,之后一直点确定保存退出就行了:
14、打开MATLAB2020a
,在命令行窗口输入:
setenv('MW_MINGW64_LOC', 'C:\mingw64');
15、在输入mex -setup
测试一下,没问题就完成了编译器的配置,如果重新打开MATLAB
发现输入mex -setup
的时候又显示找不到了,就重新执行第14步:
2 程序打包
编译器安装好之后,需要对MATLAB
代码进行调整,需要注意的是代码里面不能有类对象,就是像A.feature,在LabVIEW
里面属于无法识别的变量。
打包的过程可以参考这篇LabVIEW与MATLAB混合编程—com组件的使用,讲的非常的详细,只是安装编译器的过程我这里已经装好了,和这篇文章里的不一样,我试了那篇文章里的方法,在MATLAB
里面输入mex -setup
之后还是显示没有安装,没办法,我就查到了上面安装编译器的方法。
二、LabVIEW调用dll
同样参考这篇LabVIEW与MATLAB混合编程—com组件的使用,但我实操过程中有一些坑记录一下:
(1)这里调用的dll是用MATLAB打包的COM类型的,和.NET类型的不同,所以这点要注意!
(2)有的时候LABVIEW会卡住,导致导入dll文件的时候老是识别不出来,只要彻底关掉LABVIEW之后重新试一次就行了。
(3)参考的那篇文章最后提供的例程里面,要完全把Invoke Node
节点的输出的个数、数据类型给设定好,连好,不然会报错。
(4)在另一台电脑上使用的时候同样需要搭建一模一样的编程环境,安装MATLAB和VisualStudio,当然也有完整打包的方式,需要的话自己再额外查资料。
FIG. MATLAB函数
FIG. LABVIEW程序面板
FIG. LABVIEW前面板
最后祝大家都能成功实现!