VS2015 MATLAB混合编程之COM组件
来源:互联网 发布:日语扫描翻译软件 编辑:程序博客网 时间:2024/05/18 01:05
原地址:VS2015 MATLAB混合编程之COM组件_梦中萤火虫_新浪博客 http://blog.sina.com.cn/s/blog_8d5bae080102x792.html
概述:利用m文件生成dll再由vs2015的c#程序调用。
1:matlab编译器设置
在Command Window窗口中输入mex-setup和mbuild –setup查看编译器,如果没有,需将编辑器设置为相应的vs,下图为matlab2015b调用vs2015的正确截图。
点评:这一步花了太久太久的时间,因为电脑上最开始装的是matlab2012b ,早版本的matlab都有自带的编译器,输入mex-setup出来的是自带的编译器。最开始按照网上的教程“matlab要找windows sdk的mt.exe,找不到报错.因为vs2013在安装时,windows sdk的mt.exe位置变了,而matlab还是按照老的路径找,肯定找不到.解决:网上找到相应文件,将mbuildopts和mexopts两个文件夹复制到 (matlabroot)\bin\win64 下,(matlabroot)是matlab的安装目录”。按照各种博客一步步改了mbuildopts和mexopts两个文件夹里面的文件内容,仍然行不通,这个方法有待考察。
忙了一天所以最后重装了matlab2015b, 就可以连接上编译器了。
2:安装MCRinstaller.exe
位置在安装目录下的toolbox\compiler\deploy\win64文件夹中。
3:注册dll
对mwcomutil.dll进行注册。这个dll文件位于安装目录下的\bin\win64文件夹中(右键点击开始,命令提示符(管理员),cd+’空格’+路径,regsvr32 mwcomutil.dll)
4:生成.m文件
这是我所使用的函数,名称为add
function [c]=add(a,b)
c=a+b;
end
5:生成dll文件
在在Command Window窗口中输入deploytool,并选择Library Complier,按照下图进行配置,选择Generic COM Component类型;然后把add.m文件添加到project里面,其中Class name 为在c#中所调用的类的名字。最后点上面菜单条上的package.
然后生成,那个add.dll就是c#将要调用的dll文件.
6、开始写c#
引用添加之前生成的那个dll文件。
最后就可以运行查看结果了,运行比较慢=。=
总而言之一个小的case就算跑通了,走下来主要卡在了第一步连接编译器,各种版本的软件之间的兼容性啊适用性啊都很玄乎,网上的教程也都是五花八门。如果不是重装的2015b这么强大,我估计还要折腾好久。
参考:http://blog.sina.com.cn/s/blog_6f7265cf0101nqpi.html
http://blog.csdn.net/qq_22033759/article/details/48122383
=============分割线:后续碰到的问题=====================
1:返回值的个数
a.add(1, ref result, 5,6);//1表示返回的结果数量,要小于等于matlab对应函数实际的返回值数量。
2:返回的类型
c#中返回的结果是object类型,那么当返回的是数组,C#中如何进行类型的转化。这个查了很久的文献
http://bbs.csdn.net/topics/330032260 以及http://blog.csdn.net/zzhays/article/details/13623151
诸如上面两篇试过很多种方法,最后想到一种土方法:(double[,])result_x;这样就能直接用了,值得注意的是matlab中的1维数组到c#中会变成2维的。
3:一个dll中多个方法
修改类名,每一个类名对应一个方法。
阅读全文
0 0
- VS2015 MATLAB混合编程之COM组件
- 浅谈VC6和MATLAB混合编程之COM组件
- Matlab混合编程之COM组件(C#篇)
- 基于COM组件实现C++与Matlab的混合编程
- Matlab混合编程之NET组件(C#篇)
- 一个基于COM组件的Matlab与C#混合编程实例
- VS2015,matlab2016混合编程
- VS2015+MATLAB2016b混合编程
- VC+matlab通过Com接口实现混合编程
- 基于COM接口的VC++与MATLAB混合编程
- Matlab与VC混合编程之二
- Matlab与VC混合编程之三
- Matlab、C++混合编程之Hell world
- 小白之matlab c++混合编程
- Windows编程之COM组件
- 浅谈VC6.0和Matlab混合编程之Matlab引擎
- 《java与MATLAB混合编程》之《java调用MATLAB作图》
- VC&MATLAB混合编程
- 高效DDD聚合设计
- 十大前端开发框架(上)
- 类(python)
- tensorflow(5)-辅助函数
- 认识 HTML 4.0
- VS2015 MATLAB混合编程之COM组件
- 共享内存
- 文章标题
- KindEditor编辑器使用
- CSdn测试
- PyTorch笔记5-save和load神经网络
- 作业帮-将json数组里面的每一个对象的value取出生成与之对应的二维数组
- 串口 SWD Jtag
- 约瑟夫环(约瑟夫问题) 采用循环单链表实现