zoukankan      html  css  js  c++  java
  • C# MATLAB混编(一)

    参照这篇博客进行的C# MATLAB混编学习,学习过程中文章中的一些问题我并没有遇到,但是我遇到了一些新问题,这些问题的解决办法将在下一篇博客给出。

    配置环境:vs2010(64位)+Matlab2013a(64位)+win10(64位)
        以Matlab安装路径:C:Program FilesMATLABR2013a为例

    1.定义Matlab文件,twice.m

    function result=twice(inputvar)
    result=2*inputvar

    end

    2.Matlab编译器设置

    在command window中配置分别配置>>mbuild–setup和>>mexsetup.

    编译器均选择 VS2010

    在command window中>>deploytool。先创建project,选择.NET Assembly类型;然后把myplus.m文件添加到project里面,然后点上面菜单条上的build the project





    3.环境安装及dll注册

    需要安装MCRinstaller.exe(本机则不需要),它所在的位置是:C:Program FilesMATLABR2013a oolboxcompilerdeploywin64;

    在路径C:Program FilesMATLABR2013ainwin64里,对mwcomutil.dll进行注册(这个dll是matlab下作的任何com组件都要用到的dll),下面我们在其他编译器下调用时就可以用了。regsvr32 mwcomutil.dll

    问题:提示错误为注册dll模块的原因(Error: DllRegisterServer in E:Matlab2010bin estsrc est_1_0.dll failed)

    解决:点“开始”->“Windows系统”->“命令提示符”右键“以管理员身份运行”,在cmd中输入regsvr32 mwcomutil.dll 。这样应该就可以了。

    4.dll引用

    从C:Program FilesMATLABR2013a oolboxdotnetbuilderinwin64v2.0复制出MWArray.dll到debug目录下,从HelloNetdistrib里的HelloNet.dll复制到debug目录下。然后添加引用,浏览debug目录。

    5.在c#中简单做一个windowsapplication

    程序中需要引用的命名空间有:

    using MathWorks.MATLAB.NET.Arrays;

    using MathWorks.MATLAB.NET.Utility;

    using dlldemo;

    在按钮事件里的代码是:

    private void button1_Click(objectsenderEventArgse)

            {

               Class1myhello = new Class1();

               MWArrayi = 3;

               MWArrayresult;

                result = myhello.myplus(i);

                label1.Text = result.ToString();

            }

    问题:C#在调用dll初始化matlab生成的类时,总是提示:typeInitialization exception类型初始化设定异常,网上找了好久,试了个各种解决方法

    解决:原来是在build dll时,选择的.m文件的所在路径不能包含中文/空格,我把.m文件直接移到了根目录下的某个不含空格和中文的文件夹下,然后把在这个文件夹下的.m文件拖到myTest.prj中,build,VS中重新引用生成的新的dll,发现程序正确。

     注:我在按照这个教程进行操作的过程中遇到两个问题:

    1、当我在matlab中输入mbuild -setup后    报错

    2、总是提示:typeInitialization exception类型初始化设定异常,在改变路径后还是存在这个问题,解决办法将在下一篇博客给出。

    参考博客:http://blog.sina.com.cn/s/blog_6f7265cf0101nqm1.html



  • 相关阅读:
    MyPHPdumpTool:MySQL 数据库备份处理方案
    sdcvx:轻量级的词典工具
    Fedora中你用GNOME还是KDE?
    Linux/GNU课程
    Fireflix:便利 Flickr 用户的 Firefox 扩展
    gtkchtheme
    recordMyDesktop:录制你的 Linux 桌面
    Fedora 8.0 NS2.33拆卸手记
    办理selinux招致无法进入零碎
    ie在Ubuntu8.04下的安装进程
  • 原文地址:https://www.cnblogs.com/haxianhe/p/9271204.html
Copyright © 2011-2022 走看看