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.csdn.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.csdn.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();

    }

注意:经过测试,发现若需要从C++传递参数给自己写好的Matlab函数,则该方法(C++调用Com组件)并不是太适用,因为Matlab编译生成的Com中的函数参数全部默认为System::Object类型,而C++中没有object类型但C#中有(由此联想到Com组件是微软开发的规范,而C#是微软开发的C++衍生的面向对象的编程语言),所以使用C#结合Com组件才更为合适

因此推荐C++调用Matlab动态链接库的方式进行开发,传送门:https://blog.csdn.net/sky130054/article/details/108256035

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值