MATLAB.NET混合编程之一~~由MATLAB编译dll

本系列是讲述使用.net进行混合编程的开发,重点是放在.net方面,matlab的方面会有简单介绍,但不会有太长篇幅。


由matlab配合.net混合编程的第一步就是使用matlab编译出供给.net使用的dll。推荐使用Matlab Builder NE工具箱。在matlab的帮助文档中可以查找到NE的帮助文档,里面有详细的介绍,可以根据那个学习如何使用。

混合编程步骤

  1. 编写M函数
  2. 使用deploytool工具,新建deployment工程
  3. 新建vs项目,添加引用并编写代码

编写M函数

这个是matlab规定的,如果要进行混合编程,必须要编写m函数才能被混编。

注意C#是区分大小写的,所以matlab中编写m函数也必须注意采用规范的写法。

举个简单的m函数的例子:

function result=MyTest(x)
% H1 line
% this is an example of m function

%
result=x*x;
end

deploy工具使用

使用deploy工具编译dll时注意,在deployment project窗口的type选项,需要选择“.NET Assembly”选项

点击确定后出现.NET Assembly窗体中添加类和m函数所在文件,然后点击build按钮进行编译。

生成的文件

编译后一般会生成两个文件夹,src和distrib。distrib里面有四个文件,假设deployment project名为demo,distrib文件夹的四个文件为:

  • demo.dll
  • demo_overview.html
  • demoNative.dll
  • readme.txt

demo_overview.html文件中会有对于MCR的说明,比如使用R2012a编译的文件中会写明“This assembly is only compatible with version 7.17 of the MCR”

暂时src里面的文件还用不上,此处就不做介绍了,以后用到再补充,欢迎继续阅读下一篇《MATLAB.NET混合编程之二~~由C#调用MATLAB编译生成的dll

参考资料:

  1. M函数文件
  2. Matlab中文论坛
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matlab2012b windows版在关联vs2012编译器的时候,以及无法编译dll。 原因就是matlab默认的编译器的目录配置,include目录以及lib目录配置错误造成的。 如果你的vs目录不是默认的,或者windows是32位版本,或者vs版本不是2012,或者你的mt.exe目录不在Windows kits下,那么有可能需要修改附件里面的相关目录的设置(其实就是mbuild配置cl.exe和mt.exe的目录位置,以及mex配置的include和lib的所需目录),mbuild是编译exe的,mex是编译dll的。我的另一个资源仅处理mbuild配置,未处理mex的配置,所以不能成功编译mex。如果你已经下载过我的另一个资源,请替换mexopts目录下的msvc110opts.bat文件的30和31行代码(而不必下载这个资源): set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include\um;%LINKERDIR%\include\shared;%LINKERDIR%\include\WinRT;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\win8\um\x64;%MATLAB%\extern\lib\win64;%LIB% 附件里有一个word文件,是我修改的注释信息,如果需要手动修改,可以当做帮助来用. mbuild设置方法: 1 把附件相关的4个文件添加到matlab/bin/win64下面的2个相关目录 2 在matlab 里面运行 mbuild -setup, 然后选 y, 再选择2012的那个项目,再选y 3 mbuild应该成功了,此时可以编译为exe文件。 mex设置方法: 1 在matlab 里面运行 mex -setup, 然后选 y, 再选择2012的那个项目,再选y 2 mbuild应该成功了,此时可以编译dll文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值