matlab编译dll,然后再C#中调用

记录下matlab编译dll,然后再C#中调用

  • 首先是在matlab中编写好需要编译的函数,我用的matlab2014b,各个版本之间的使用方法应该差别不大。
    我这里的写的函数是调用matlab的streamslice函数画流线图
    写好函数后在命令行输入deploytool,会弹出一个窗口,各版本matlab的选项有差异,选择Library Compiler,在编译器窗口选择编译.NET Assembly,然后添加需要编译的m文件,命名空间和类名,函数名之类的可以自定义,也可以用默认的名称。
    选择Library Compiler
    编译器窗口
    设置好后点击Package就会在当前的工作目录下生成一个文件夹,打开后又有几个文件夹,其中后缀为files_only的文件夹里面就包含我们需要使用的dll文件。
    可以使用的dll
    然后在C#工程中,在解决方案-引用里面填在dll文件的引用,以及MWArray.dll的引用,MWArray.dll在matlab的安装目录下能够找到。然后在程序中添加命名空间的引用,除了我们要使用的dll的命名空间外,还包括MathWorks.MATLAB.NET.Arrays和MathWorks.MATLAB.NET.Utility,因为matlab的数据类型都是MWArray,在向matlab函数传参数时要将C#中的变量类型强制转换成MWArray,然后就能愉快的调用matlab函数啦。
using DrawingFunc;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;

int[] list_m = Point_list_X.ToArray();
int[] list_n = Point_list_Y.ToArray();
int[] list_data = Data_list.ToArray();
MWArray m = (MWNumericArray)list_m;
MWArray n = (MWNumericArray)list_n;
MWArray filenames = (MWNumericArray)list_data;
MWArray color = (MWNumericArray)new double[3] { 0.5, 0.5, 0.5 };
MWArray fp = (MWArray)filepath;
MWArray IMG = (MWArray)BGI;
DrawingFunc.Class1 t = new DrawingFunc.Class1();
t.DrawingFunction(IMG, fp, filenames, color, m, n);
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、付费专栏及课程。

余额充值