对于这次论文项目,最后在写一篇关于工程的博客,那就是在asp.net下调用matlab生成的dll动态链接库。至今关于matlab,c/c++(opencv),c#(asp.net)我总共写了4篇配置的博客,配置问题搞了我们差不多2周多的时间,各种编译不通过,各种链接出问题,各种头疼,甚至都有放弃asp.net下建工程,转用matlab的gui来实现前端界面的念头了。但是在队友的强烈要求下,我不得不硬着头皮搞下这配置问题,最终总结出这4篇配置博客。其中艰辛,恐怕连队友都不甚了解。

  当然在实验室同学的帮助下,最后一个配置(asp.net+matlab)也最终成功通过了编译,首先先转一下实验室同学所写的配置方法,虽然我是按照他的方法进行配置,但是我们有自己的新问题

下面先转他的博客:http://user.qzone.qq.com/1033932438


然后我就记录我是怎么配置的:

1、安装Matlab,我安装的Matlab版本那是2012a,记得千万要安装32位的Matlab版本,之前我也是安装64位的matlab结果,vs2010的ASP.NET Development Server怀疑不支持64位的,所以虽然编译能通过,但是在网页中显示就会出错。不过神奇的是,我尝试过很多配置结果曾经在win7+IIS下能够成功运行64位Matlab编译出的dll文件(有心人可以试试)。同样的我从同学那拷贝一个安装matlab32位的链接:http://wenku.baidu.com/link?url=52lt-eO7dnNf5XEvjbNWybs3qJV4npd0MBhEdJi75ziqXyI-Oyk-EvwXlGMMQSF-Y9J1vcOqW4jusOgAE8Jjkll7T63JYIR6GZE1USYB_Yi


2、安装好Matlab后,找到其安装根路径下的toolbox\compiler\deploy\win32,有个“MCRInstaller.exe”,安装之。安装过程直接傻瓜式的点确定。


3、打开Matlab,在command window下输入"mbuild -setup",然后如下图中展示的顺序,敲入指令执行,来进行Matlab与编译器的挂接。当最后那行中敲入“y”,回车后,Matlab将连接你选择的VS,成功后将出现随后的截图中的界面。按照红色划线的来输入。


4、然后在MATLAB主界面,File->new->development Project,就会出现如图界面,在Name输入你的工程名字,然后在Target中选择.NET Assembly,然后点OK。如图所示:


5、点了OK之后就会在MATLAB主界面的右边看到新的工具栏, 点击Add class,输入你想要的类名,然后在新建的类下点击"add file",把你想要在C#中调用的M文件加入进来。之后就会出现如下图情况:

在这里需要你们肯定都要问如果我的m_3_read_sket_and_retrieve.m文件调用了其他m文件怎么办,那么你就需要在下面这个窗口添加所有你在m_3_read_sket_and_retrieve.m文件中所使用到的M文件(包括Mex文件),千万千万记住,你所有的m文件都没用使用过addpath函数,如果有使用到,请将其删除。如果存在一个M文件使用到了addpath函数,是会出错的。如图:


6、最后点击上面这张截图中的build图标(一个方块上有3个指着它的箭头),等待一段时间让Matlab生成dll文件,成功后将会如图所示,将会在你的工程目录位置下生成一个文件夹和一个.prj文件。


7、在工程目录下找到工程文件夹,在工程文件夹中将会看到两个文件夹,一个是distrib,另一个是src,src文件夹里面的文件是一些c#文件,将会指导你如何使用生成的类,而distrib文件夹中才是我们所要的dll文件。现在打开VS,打开你的工程,在工程属性下添加两个dll文件,如图

其中MWArray能够在Matlab安装目录下找到,我的路径是E:\Program Files (x86)\MATLAB\R2012a\toolbox\dotnetbuilder\bin\win32\v2.0。


8、添加引用成功后,就开始写代码了在开头加入这三行:

using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using CS_Online;

然后在使用时,如下图这样调用:

MWNumericArray frontSket = new MWNumericArray(frontDrawDataArray);
MWNumericArray sideSket = new MWNumericArray(sideDrawDataArray);
MWNumericArray topSket = new MWNumericArray(topDrawDataArray); CSRetrieval csr = new CSRetrieval();
csr.M_3_read_sket_and_retrieve(frontSket, sideSket, topSket);

9、如果配置没问题的话,就会看到结果了,上面讲的代码都是自己的代码的一部分,下面给一个demo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using csdemon; namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
double[,] array2D1 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
double[,] array2D2 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
double[,] array2D3 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
MWNumericArray a1 = new MWNumericArray(array2D1);
MWNumericArray a2 = new MWNumericArray(array2D2);
MWNumericArray a3 = new MWNumericArray(array2D3);
myMathClass myMathDemon = new myMathClass(); MWArray result = myMathDemon.addm(a1, a2);
MWNumericArray r = (MWNumericArray)result;
double[,] location = (double[,])r.ToArray();
string str = "";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 2; j++)
{
str += location[i, j];
str += " ";
}
}
Response.Write("<script>alert('" + str + "')</script>");
}
}
}

  

asp.net下调用Matlab生成动态链接库的更多相关文章

  1. c++调用matlab生成的Dll动态连接库

    点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台:   matlab 7.0(R ...

  2. C#调用Matlab生成的Dll

    问题描述:最近开发需要调用matlab生成的DLL,在New MWNumericArray 对象的时候报错,提示未将对象引用到对象的实例. 问题分析:因为MWArray.dll是Matlab提供的DL ...

  3. C/C++下调用matlab函数操作说明

    1.matlab的安装 连接:http://pan.baidu.com/s/1qXuF7aO 安装32位版本的matlab(在目录下bin文件夹中有两个文件夹,选择win32文件夹下的setup进行安 ...

  4. java调用matlab生成exe文件

    一.Matlab生成Java Package 1.在MATLAB的Command Window输入deploytool命令,选择Library Compiler. 2.在弹出的窗口选择Java Pac ...

  5. Matlab生成动态链接库供C#调用

    1.首先在Matlab中编写一个或几个.m文件 2.然后在命令空间中输入命令:deploytool 3.修改工程名称,修改需要生成文件后缀 4.添加类,添加文件,然后点击生成.

  6. C#调用Matlab生成的dll方法

    其实整个过程比较简单,但是需要心细一点. 需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安装一个MATLAB Compiler Runtime,这个文件(MC ...

  7. .net 调用 Matlab生成dll出现的问题(The type initializer for 'MathWorks​.MATLAB.NE​T.Utility.​MWMCR' threw an exception.)

    https://cn.mathworks.com/matlabcentral/answers/278399-i-get-an-error-saying-the-type-initializer-for ...

  8. ASP.NET下调用ffmpeg与mencoder实现视频转换截屏

    最近要做一个视频播放的系统,用到了ffmpeg和mencoder两个工具,查了一些资料,发现这方面的资料还挺多的,但是就是乱了一点,我自己从头整理了一下,和大家分享一下: 1.ffmpeg实现视频(a ...

  9. VS2008 C++ 调用MATLAB 2009b 生成的DLL .

    转载: 刚开始学习用VC++调用matlab生成的DLL,找了网上一些资料,难以找到vs2008与MATLAB2009b版本的,按照以往版本做的总是有很多错误.经过两天努力,终于调试成功,这里将经验总 ...

随机推荐

  1. python作为一种胶水和c/c++

    如果需要用 Python 调用 C/C++ 编写的第三方库,只需要一个脚本语言来粘合它们.这个时候,用 Python ctypes 可以很方便地实现调用. StackOverflow 上的 Calli ...

  2. clean之后R文件消失

    首先确定你的SDK是新的. 其次接下来检查你的.xml文件,文件名不能大写. 如果xml文件太多 ,那么clean一下你的项目,这时候注意看Console的提示. Console会提示你xml文件错误 ...

  3. 十天冲刺---Day5

    站立式会议 站立式会议内容总结: 燃尽图 照片 PM确实不应该交给组内编码最强的人来做. 编码的过程还要考虑整个项目的流程压力较大. 需要队友的支持和沟通.

  4. 《Javascript DOM编程艺术》 读书笔记 —— 好书,通俗易懂!!!!! 相当的严谨!!!!

    1.javascript弱类型语言,解释性语言. 2.javascript数据类型:字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空( ...

  5. 使用iframe标签结合springMvc做文件上传

    1.iframe.jsp <body> <h1>测试iframe文件上传</h1> <!-- 1.要求表单的target属性名称与iframe的name名字一 ...

  6. 在 ASP.NET 中执行 URL 重写的方法

    由于需要我们经常会想将动态的页面做成伪静态的,或者在get传值的时候使其简洁明了(实现“可删节”的URL),这时我们需要用到URL重写,微软的MSDN上有详细的原理和使用介绍.我这里就将一种简单的使用 ...

  7. mysql基础语法及拓展到web中的sql注入

    本来是想写下javaweb的mvc(tomcat, spring, mysql)的搭建,  昨天搭到凌晨3点, 谁知道jdbcTemplate的jar包不好使, 想死的心都有了, 想想还是休息一下, ...

  8. dede使用方法----如何去掉dede自带的版权

    最近有朋友问如何将dede的Power by DedeCms去掉,一来为了安全,二来外链确实有些影响,这里分享下去除方法,需要的朋友可以参考下   自从dedecms织梦系统更新到6.7日的版本,底部 ...

  9. 系统间通信(4)——IO通信模型和JAVA实践 中篇

    4.多路复用IO模型 在"上篇"文章中,我们已经提到了使用多线程解决高并发场景的问题所在,这篇文章我们开始 4-1.现实场景 我们试想一下这样的现实场景: 一个餐厅同时有100位客 ...

  10. 在MAC上搭建tomcat,再使用servlet时遇到的问题。

    说起来真是惭愧.在mac上配置tomcat环境时.tomcat6能正确运行.但是7,8都运行不了.具体表现是tomcat6访问127.0.0.1:8080可以显示那个界面,然而tomcat7和8都显示 ...