美文网首页
Matlab发布C#调用的dll

Matlab发布C#调用的dll

作者: 过桥 | 来源:发表于2015-09-11 14:17 被阅读1070次

    编写Matlab程序

    编写测试方法

    AddAdd

    Matlab中测试

    TestTest

    调用deploytool工具,选择 .NET Assembly

    deploytooldeploytool

    添加文件Build中添加需要生成的方法

    Package中添加MCR

    若没有添加,编译后的dll无法使用,提示 dll 破损


    AddAdd
    MCRMCR

    设置生成环境

    VS项目中使用的Framework版本需与此一致


    FrameworkFramework

    点击生成,成功后检查工作目录下生成的文件

    BuildBuild
    BuildBuild

    添加dll引用,调用测试。

    安装目录\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll
    工作目录\Demo\src\Demo.dll


    TestTest

    问题一:无法初始化

    检查是否已安装MCR(运行时),并且安装时注意选择安装路径,不能有空格、中文。
    检查是否配置好环境变量


    PathPath

    问题二:无法调用神经网络工具箱

    生成后直接调用,出现以下异常
    编译异常Undefined function or method 'sim' for input arguments of type 'struct'.

    通过帮助文档、google、论坛总结网上有两种解决方案,均未成功

    方法一:找到工具箱中sim.m,将其打包到dll中
    sim.m路径D:\MATLAB2010\toolbox\nnet\nnet@network\sim.m
    添加后调用出现以下异常
    feval Undefined function or method 'learngdm' for input arguments of type 'char'

    方法二:在sim方法前添加net=network(net); 强制转换类型
    添加后调用出现以下异常
    No appropriate method, property, or field delays for class nnetWeight

    尝试添加 net=network(net);后,再添加nnetWeight.m,根据异常信息不断添加系统方法,仍未成功。

    后查找资料时发现因涉及核心模块,软件未开放调用神经网络工具箱方法。
    http://www.ilovematlab.cn/thread-103075-1-1.html

    命令行调用 Matlab

    因C#调用编译后的神经网络工具箱失败,考虑转换实现方式:
    1.通过命名行调用Matlab,再将命令语句保存为可执行文件。
    2.C#调用执行文件(.bat)。
    命令语句如下:

    matlab -nodesktop -nosplash -r Add(1,2)【安装版Matlab】
    D:\MATLAB2010B\bin\win32\MATLAB.exe -nodesktop -nosplash -r Add(1,2)【绿色版Matlab,需要完整启动程序路径】
    

    注释:myadd 为添加方法,需要两个参数。
    bat文件:


    batbat

    运行结果:(仅Command Window,无其他界面)


    windowwindow

    相关文章

      网友评论

          本文标题:Matlab发布C#调用的dll

          本文链接:https://www.haomeiwen.com/subject/mpppcttx.html