对于这次论文项目,最后在写一篇关于工程的博客,那就是在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. 数据库表转javaBean

    复制后修改部分代码 package com.study; import java.io.BufferedWriter; import java.io.File; import java.io.File ...

  2. window php redis扩展下载地址

    redis扩展下载 http://windows.php.net/downloads/pecl/snaps/redis/

  3. jq mobile非ajax加载,ready执行两次

    jqm只有通过ajax加载的页面才只执行一次ready(正常情况) 页面刷新(同非ajax加载的页面)都会执行两次ready,包括pageinit和pageshow事件也是如此. 两种避免的方法是: ...

  4. MyBatis特殊字符转义

    使用mybatis的时候,特殊字符,例如<,>,<>,..... 需使用以下进行转义 < < 小于号 > > 大于号 & & 与 &am ...

  5. tab切换(修改)

    html代码: <div class="tabContent"> <ul class="tab clearFix"> <li cl ...

  6. zabbix的使用

    1,zabbix运行流程 2功能特性 1数据收集 2灵活触发器 3高度可定制告警 4实时绘图功能 5web监控能力 6多种可视化展示 7历史数据存储 8配置容易 9API功能 10.......... ...

  7. zabbix的安装

    1  lamp环境搭建以及zabbix安装 方便的话使用yum方式(yum安装的是2.2版本) 安装epel环境 yum install -y epel-release 安装lamp环境 yum in ...

  8. 基于tomcat-jQ-springMVC-bootstrap的公司产品管理WEB应用

    管理员登录后台以后才能操作 ,权限管理只有一个管理员, 系统的主要作用是查看所有的 “公司列表”, 并查看该公司的”产品“, 用户可以对该公司的产品进行添加或者删除, 添加或者删除公司等 , 添加产品 ...

  9. 使用Apache Archiva搭建Maven Repository Server

    关于 Maven 私服 的搭建 这里 采用 Apache Archiva 的 Standanlone 模式来安装 1) 首先到archiva主页上下载最新版(Archiva 2.2.1 Standal ...

  10. Vim快捷键操作命令

    Vim是一个超牛的编辑器,命令功能十分强大 .而且这些命令大都可以进行组合 ,比如,9yy命令表示复制9行内容,9表示要复制的行数,同样100dd表示删除100行,当数字和命令合作的时候,就比单纯的命 ...