VS2019中的MFC程序调用matlab2018生成的com组件详解
COM组件(不是动态库):是在Windows平台下,按照COM的规范实现的、封装在动态库(DLL)或者可执行文件(EXE)中的一段代码,COM接口是组件的核心,从一定程度上讲"COM接口是组件的一切"。COM标准使编程变得便利:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言、平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。
(1)matlab2018生成com组件
1)在matlab命令行中输入命令:deploytool,选择Lib
2)生成com组件,作如下选择:Generic COM、添加.m文件、选择Matlab Runtime封装方式
Matlab Runtime的两种封装方式的区别与使用,可在下面博客更进一步了解:
https://blog.****.net/sky130054/article/details/107670213
完成
(2)Com组件注册
将生成的COM组件中的for_redistribution_files_only文件夹下的name_1_0.dll(name为生成COM组件时输入的名称,1_0表示版本号)进行注册,打开cmd
输入:regsvr32 路径\for_redistribution_files_only\name_1_0.dll
注册成功
若出现如下报错,则可能生成COM组件未成功或是其他原因
可以尝试,将name_1_0.dl文件复制到C:\Windows\SysWOW64文件夹下,再以管理员身份打开cmd进行注册
(3)VS的MFC程序加载COM组件
1)VS2019中添加Com组件,打开项目属性页,在如下地方选择“公共语言运行时支持(/clr)”
2)在资源面板右键“引用”->添加引用
在COM选项卡中找到自己用matlab创建COM组件后注册的dll文件对应名称
COM组件添加引用成功
注:若出现如下问题请查看这篇博客:
https://blog.****.net/sky130054/article/details/107670340
(4)VS中调用引用的Com组件中的函数
1)查询Com组件命名空间,双击引用中需要的文件打开对象浏览器,点击带{}符号项,得到命名空间Namespace XXX,然后在按钮的点击事件对应代码所在的.cpp源文件中添加命名空间,代码如下
using namespace XXX;
2)在对象浏览器查询所需函数所在类名,然后在按钮点击事件对应代码中使用该类生成相应对象,即可调用所需函数。
调用代码:
void CMTLTESTDlg::OnBnClickedButton2()
{
Class1Class imshow;
imshow.Im_show_4();
}