时间:2021-05-20
其实整个过程比较简单,但是需要心细一点。
需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安装一个MATLAB Compiler Runtime,这个文件(MCRInstall.exe)在安装完MATLAB之后就会在安装文件夹下存在,需要搜索一下(因为不同版本的MATLAB可能存放位置不同),把它安装一下就OK了。
接下来在MATLAB中写一个m文件,当然是一个函数啦。然后在matlab命令行下运行deploytool,在图形界面里选.net组件,然后进入一个工程目录的界面,新建工程,工程的名字就是.net组件的名字(例如sinfit),在其下面的目录表示.net类名(例如sinfit),在类名上点右键"Add File...",把Matlab的.m函数文件(例如sinfit.m)选进去。最后进行编译(Build the project),生成的目录下有以工程名命名的dll文件(例如sinfit.dll)。OK,dll生成好了。
接下来打开VS,导入两个dll,一个前面生成的那个dll,一个是<matlabroot>/dotnetbuilder/bin/win32/v2.0/mwarray.dll(如果找不到就搜一下)。然后在工程里加入下面的引用:
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using sinfit;
OK,可以用了,用法是实例化一个sinfit的对象,然后调用里面的matlab函数,不过有一个问题需要注意的是,matlab的输入和输出数据都是矩阵,很特殊,在.net中叫做MWArray,它还有一个子类叫做MWNumericArray,它们的使用方法简单说明如下:
创建一个MWNumericArray对象的方法:MWNumericArray para = new MWNumericArray(MWArrayComplexity.Real, 4, 2);这样就创建了一个矩阵,如果要把它映射给一个double型的二维数组,则需要创建数组double[,] temp = new double[2, 4];这个地方就要注意了,正好反过来。然后如果是MWNumericArray赋给double[,]的话可以采用MWNumericArray的ToArray方法,如double[,] paras = (double[,])para.ToArray(MWArrayComponent.Real);其中para是MWNumericArray对象。如果是double[,]赋给MWNumericArray的话,那就直接赋值就OK了。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例展示了C++与C#互调dll的实现步骤,在进行大型项目共享dll动态链接库中可以用到。具体方法如下:一、C#调用C++dll步骤(只能导出方法):1.c
C#如何调用一个非托管动态库中的函数呢,比如用VC6写的动态库,总之C#调用动态库的过程是比Java调用DLL动态库方便快捷多了,下面举例说明这个过程。1、创建
有的时候,我们需要在php中利用到其他语言编写的dll类库,如C#编写的dll,方法就是利用PHPnewCOM方法来调用,在调用之前先要把dll库注册并把程序集
本文实例讲述了C#生成DLL文件的方法。分享给大家供大家参考。具体分析如下:VisualC#生成DLL文件VisualC、Delphi或者VB等编程语言来编写的
本文实例讲述了C#将jpg转换为pdf的方法。分享给大家供大家参考。具体实现方法如下:C#生成pdf文件需要使用到一个itextsharp.dll文件,itex