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

配置环境:vs2010(64位)+Matlab2013a(64位)+win10(64位)

    以Matlab安装路径:C:\Program Files\MATLAB\R2013a为例

1.定义Matlab文件,twice.m

function result=twice(inputvar)

result=2*inputvar

end

2.Matlab编译器设置

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

编译器均选择 VS2010

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

3.环境安装及dll注册

需要安装MCRinstaller.exe(本机则不需要),它所在的位置是:C:\Program Files\MATLAB\R2013a\toolbox\compiler\deploy\win64;

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

问题:提示错误为注册dll模块的原因(Error: DllRegisterServer in E:\Matlab2010b\bin\test\src\test_1_0.dll failed)

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

4.dll引用

从C:\Program Files\MATLAB\R2013a\toolbox\dotnetbuilder\bin\win64\v2.0复制出MWArray.dll到debug目录下,从HelloNet\distrib里的HelloNet.dll复制到debug目录下。然后添加引用,浏览debug目录。

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

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

using MathWorks.MATLAB.NET.Arrays;

using MathWorks.MATLAB.NET.Utility;

using dlldemo;

在按钮事件里的代码是:

private
void button1_Click(objectsender,EventArgse)

{

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

C# MATLAB混编(一)的更多相关文章

  1. python 与 matlab 混编

    用于 Python 的 MATLAB 引擎 API 快速入门 安装用于 Python 的 MATLAB 引擎 API Matlab的官方文档中介绍了 Matlab 与其余编程语言之间的引擎接口,其中包 ...

  2. C# MATLAB混编(二)

    在上一篇博客中说到按照参考教程操作之后依然有两个问题. 问题1:当我在matlab中输入mbuild -setup后    报错 解:这是因为VS与Matlab存在版本匹配问题,理论上来说vs版本最好 ...

  3. Matlab与.NET混编解决人脸识别问题

    原文 http://www.cnblogs.com/asxinyu/archive/2013/05/29/3107013.html 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的 ...

  4. Matlab.NET混编技巧之——找出Matlab内置函数

    原文 http://www.cnblogs.com/asxinyu/p/3295309.html Matlab与.NET的混合编程,掌握了基本过程,加上一定的开发经验和算法基础,肯 定不难.反之,有时 ...

  5. Matlab与C混编的介绍

    原本写给一个朋友的,帮助她入门matlab与C混编的 >#####环境: * Matlab:MATLAB R2013a * C编译器VC++2012 === #####配置环境: 在**Matl ...

  6. Matlab高级教程_第二篇:一个简单的混编例子

    1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...

  7. Matlab高级教程_第三篇:Matlab转码C/C++方式(混编)_第一部分

    0. 其实Matlab的转码混编大多数就是为了现成的算法函数不用再写了,2就是为了方便提高代码运行速度用C语言去运行. 1. MEX文件: Mex文件是一种可在matlab环境中嗲用C语言(或fort ...

  8. Swift和Objective-C混编注意事项

    前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...

  9. iOS 里面 Swift与Objective-C混编,Swift与C++混编的一些比较

        即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的.那你只能去问问”度娘“或“狗哥”怎么用Swift调用C++算法.   一,C,C++, Objective-C,S ...

随机推荐

  1. 阻止系统自动睡眠的小软件,附C#制作过程(执行SetThreadExecutionState API函数,让系统误判)

    因为有时下载东西的时候,不想让电脑自动深入睡眠,所以就开启了离开模式.这样不但不节能环保,而且到真正想要睡眠的时候就是一翻蛋疼. 改过自新,关闭了离开模式,同时无操作30分钟后也会进入睡眠模式.但是在 ...

  2. windows Service 之调试过程(附加到进程里调试,而且启动时间不能超过30秒)

    最近第一次用C#写了一个windows service ,其实实现的内容比较简单.就是启动remoting 连接,但是调试相对初次写windws service 的我来说,比较烦.没有经验,而且没办法 ...

  3. J2EE--Struts2基础开发

    内容中包含 base64string 图片造成字符过多,拒绝显示

  4. spring boot单元测试之MockMvc

    spring单元测试之MockMvc,这个只是模拟,并不是真正的servlet,所以session.servletContext是没法用的. @RunWith(SpringRunner.class) ...

  5. 使用 Spring Boot Actuator 构建 RESTful Web 应用

    Spring Boot Actuator 是 Spring Boot 的一个子项目.通过它,可以很轻易地为应用提供多种生产级服务.本教程中,你将通过构建一个应用来学习如何添加这些服务. 1. 你需要构 ...

  6. C++标准库(体系结构与内核分析)(侯捷第一讲)

    一.C++标准库介绍 C++标准库:C++ Standard Library C++标准库与STL有什么关系: STL:Standard Template Library STL包含6大部件,基本占标 ...

  7. java多线程死锁

    进程(线程)同步的基本概念 进程之间的制约关系 1. 直接制约关系(进程同步) 这个关系主要源于进程合作,例如,有一个输入进程A通过单缓冲向进程B提供数据,当该缓冲空时,进程B因为不能获得所需数据而被 ...

  8. 深度探索c++对象模型 第二章

    1,c++转换函数:显示转换和隐式转换. 隐式转换为程序员提供了很大的变量.比如整形提升,普通类型转换为类类型(operator int())都为程序带来无尽的方便.试想,如果没有整形提升,一个sho ...

  9. C++ 洛谷 P2657 [SCOI2009]windy数 题解

    P2657 [SCOI2009]windy数 同步数位DP 这题还是很简单的啦(差点没做出来 个位打表大佬请离开(包括记搜),我这里讲的是DP!!! 首先Cal(b+1)-Cal(a),大家都懂吧(算 ...

  10. 微服务-springboot打包

    idea打包方式: 打包前确认项目可以正常运行 一.File->Project Structure->Artifacts->点击 + ->JAR->From module ...