记VS2010与MATLAB混合编程遇到的一些问题

一、首先使用的是win7 ×64系统 VS2010软件和MATLAB2014b

        问题:MATLAB2014b进行打包时,总是打包失败。

        原因:我使用的这个MATLAB版本破解不完全,可以进一步破解然后尝试。

二、重新安装了MATLAB2015a是个破解完全的

          打包的问题成功解决了。写了小的测试代码,但是在使用打包的类创建对象时,显示如下错误

       首先查看是否是目标平台设置不匹配,见下面第6条   。     

三、具体打包过程和解决问题如下


1. 安装好MATLAB后,还需要找到安装路径下的(我的是D:\matlab2015a\toolbox\compiler\deploy\win64)中的MCRInstaller.exe进行安装,安装之后     环境变量时自动添加的,可以查看一下,如果没有可以手动添加MCRInstaller.exe的安装路径。
2. 安装之后还需要在dos环境注册regsvr32 mwcomutil.dll(未尝试不注册是否可以)
3. 利用MATLAB2015b建立函数,保存目录尽量不要放在桌面以及路径不要使用中文
  function result = mypower(x,y)
  %UNTITLED Summary of this function goes here
  %   Detailed explanation goes here

  result=power(x,y);
  end
4. 在matlab的主界面找到   ----->  APPS-----> Library Compiler ,打包dll文件

    

   注意c#编程需要选择.NET Assembly    然后添加刚刚写的mypower.m文件,点击Package(绿色对勾)进行打包操作。

    
    打包结束会产生一个mypower文件夹,里面有for_redistribution,for_redistribution_files_only和for_testing子文件夹,我们需要的mypower.dll就在  for_testing文件夹中。

5. VS2010新建一个控制台的工程, 在工程的引用上右键---->添加引用
    选择浏览,将刚刚生成的 for_testing文件夹中的mypower.dll和D:\matlab2015a\toolbox\dotnetbuilder\bin\win64\v2.0安装目录下的MWArray.dll添加进去
    

6. 右键点击自己创建的c#工程,选择属性,如果是x64系统,需要修改如下(本人就是在此处出现错误),修改为目标平台x64,否则会出现,调用         MATLAB 函数 时参数一直不匹配。
     
7. 添加引用   using MathWorks.MATLAB.NET.Arrays;  using MathWorks.MATLAB.NET.Utility;using mypower;
    具体代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MathWorks.MATLAB.NET.Arrays;
using mypower;
namespace Conpower
{
    class Program
    {
        static void Main(string[] args)
        {
            MWArray x = 2, y = 4, result = 0;
            Classpower po = new Classpower();
            result = po.mypower(x, y);
            Console.WriteLine("c#和MATLAB混合编程测试函数 power(" + x+ ","+ y +")= "+result);
            Console.ReadKey();
        }
    }
}
8. 结果
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值