c#调用matlab制作的dll(挺简单的,看完记得点赞哦)

1 篇文章 0 订阅

工具版本:VS2015,Matlab2016b

一、安装MCRInstaller

安装包的位置就在matlab的安装目录下,如我的(D:\Program Files\MATLAB\R2016b\toolbox\compiler\deploy\win64)

双击MCRInstaller.exe按照步骤一步步安装即可

此安装包主要是用于matlab打包文件所用。

二、编写matlab函数文件MySmooth.m

function result=MySmooth(data,sigma)
result = smooth3(data,'box',sigma);
end

此函数作用是对三维数据进行平滑,result中是平滑后得到的数据

三、用matlab将函数打包为C#可调用的dll文件

 1、打开Library Compiler

2、选择指定项、添加自己的.m文件(如果有多个.m文件,在第二步全部添加即可)、修改类名(可改可不改,c#中调用时会用)

 

3、完成时的截图

4、选择保存路径后, 进入打包过程,等待完成即可

5、 生成dll文件

 

 四、用vs2015创建控制台应用,并引用两个dll文件,第一个即上一步生成的dll文件,我的是MySmooth.dll文件,路径你已经知道了,第二个文件是MWArray.dll(此文件的作用是c#与Matlab数据类型间的转换),路径是:D:\Program Files\MATLAB\R2016b\toolbox\dotnetbuilder\bin\win64\v2.0,你们类比下自己的即可。

using dosefromge;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MathWorks.MATLAB.NET.Arrays;//添加对MWArray的引用


namespace cCallMatlab
{
    class Program
    {
        static void Main(string[] args)
        {
            double[,,] list = new double[40, 40, 40]; //列向量
            Random r = new Random();
            for (int i = 0; i < 40; i++)
            {
                for (int j = 0; j < 40; j++)
                {
                    for (int x = 0; x < 40; x++)
                    {
                        list[i, j, x] = r.Next(100);
                    }
                }
            }

            MWArray array = new MWNumericArray(list);

            MySmooth.Smooth smooth = new MySmooth.Smooth();

            MWArray result = smooth.MySmooth(array, 3);
            double[,,] resultList = (double[,,])result.ToArray();

            Console.WriteLine(result.ToString());


            //DoseCalc doseCalc = new DoseCalc();
            //MWArray doseTest=doseCalc.main_gecalc();
            //double dose = double.Parse(doseTest.ToString());

            //Console.WriteLine("doseTest值:"+dose);
            Console.ReadKey(); //防止控制台直接结束
        }
    }
}

运行结果:

ps:说一下运行时踩过的坑:

1、程序直接报错:试图加载不正确的程序等,可能是因为x64或x86的原因,反正我的是因为这个

解决:

ps:如果电脑是32位的,只有matlab2015b以及之前的版本才有32位安装包。制作流程跟上述64位相同。vs环境要设置为x86(设置AnyCPU,首选32位也不行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值