怎样用matlab生成vs可调用的dll形式的com组件 通常所说的C#可以直接调用MATLAB的com组件,是指调用...

matlab\u4e0eC#\u6df7\u7f16\uff0c\u901a\u8fc7\u751f\u6210.net\u7684dll\uff0c\u53ef\u4ee5\u8131\u79bbmatlab\u73af\u5883\u8fd0\u884c\u5417\uff0c\u5982\u679c\u4e0d\u884c\u4e0ecom\u7ec4\u4ef6\u6df7\u7f16\u6709\u4ec0\u4e48\u4e0d\u540c\u5462\uff1f

\u901a\u8fc7dll\u4e0d\u80fd\u5b8c\u5168\u8131\u79bbmatlab\u73af\u5883\uff0c\u4f46\u662f\u5728\u6ca1\u6709\u5b89\u88c5matlab\u7a0b\u5e8f\u7684\u673a\u5b50\u4e0a\u53ea\u8981\u5b89\u88c5\u4e00\u4e2amatlab\u8fd0\u884c\u73af\u5883\u5c31\u53ef\u4ee5\uff0c\u5373\u6587\u4ef6MCRInstaller.exe \uff1b
\u5b58\u653e\u5728\u8def\u5f84\u662fD:\Program Files\MATLAB\R2008a\toolbox\compiler\deploy\win32 \u91cc\u9762\uff08\u6211\u7684matlab\u5b89\u88c5\u5728D\u76d8\uff09\uff0c\u8fd9\u4e2a\u6587\u4ef6200\u591aM\uff1b
\u81f3\u4e8eCom\u7ec4\u4ef6\u65b9\u5f0f\uff0c\u6211\u6ca1\u7528\u8fc7\uff1b
\u81f3\u4e8e\u753b\u56fe\uff0c\u6211\u662f\u7528mschart\u753b\u7684\uff0c\u7f8e\u89c2\uff0c\u4e5f\u4e0d\u9ebb\u70e6\uff1b

\u6211\u53ea\u77e5\u9053\u53ef\u4ee5\u8c03\u7528matlab\u7684dll\uff0c\u4e0d\u8fc7\u4e0d\u77e5\u9053\u5b83\u662f\u5426\u5c31\u662f\u6240\u8c13\u7684\u8c03\u7528com\u7ec4\u4ef6\u3002
-----------------
\u4fee\u6539\u4e00\u4e0b\uff0cmatlab\u7a0b\u5e8f\u53ef\u4ee5\u7f16\u8bd1\u6210.net\u7ec4\u4ef6\u548c\u4e00\u822c\u7684com\u7ec4\u4ef6\uff0c\u4ee5dll\u7684\u5f62\u5f0f\u4f9bC#\u8c03\u7528\u3002
\u4f46\u5e76\u4e0d\u8868\u793a\u5b83\u652f\u6301\u6240\u6709\u7684matlab\u51fd\u6570\uff0c\u53ef\u4ee5\u770b\u5b83\u7684\u5b98\u7f51\u5bf9\u7f16\u8bd1\u5668\u7684\u8bf4\u660e\uff1a
http://www.mathworks.com/products/compiler/compiler_support.html

1.在matlab中生成dll

在m文件中实现如下功能:
获得N个魔方矩阵的秩。m文件的内容如下:
function r = mrank(n)
r = zeros(n,1);
for k=1:n
r(k) = rank(magic(k));
end

将上述内容保存为:mrank.m

在matlab的command 窗口键入:
>> mcc -B csharedlib:mrank mrank.m %该命令将在后面做说明

在matlab7.0中执行上述命令后生成下面几个文件:
mrank.exp mrank.exports mrank.h mrank.lib mrank.c mrank.dll

在vs2008中使用m文件的函数功能。
首先配置vs2008的环境
1.工具——> 选项——>项目和解决方案——>VC++目录
(1) 选择“可执行文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\bin\win32(注意:当前的Mathlab安装在C:\Program Files下面)
(2)选择“包含文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\include
(3)选择“引用文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\lib
(4)选择“库文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft
上述环境只需要配置一次

对于每一个工程,做下面的设置
项目——>属性——>连接器——>输入
选择:附加依赖项:添加:
libmex.lib
libmx.lib
libmat.lib
mclmcrrt.lib

将mrank.h mrank.lib mrank.dll拷贝到当前目录下
cpp文件中中的内容如下:
#include "stdafx.h"
#include<stdlib.h>
#include"matrix.h"
#include"mrank.h"
#include "mclmcrrt.h"
#pragma comment(lib,"mrank.lib")

int main()
{
mxArray *N(NULL),*R(NULL);
int n =12;
mrankInitialize();//初始化动态链接库
N = mxCreateDoubleScalar(n);//用n来初始化生成的数组,其实标量就是一个1*1的数组
mlfMrank(1,&R,N);//执行m文件的主要功能

size_t num = mxGetM(R);//R的行的个数
double *res = new double[num];
memset(res,0,sizeof(double)*num);
memcpy(res,mxGetPr(R),sizeof(double)*num);
for(int i=0;i<num;++i)
printf("%f\n",res[i]);
delete[] res;
mxDestroyArray(N);
mxDestroyArray(R);

mrankTerminate();//终止动态数据连接
return 0;
}

上述cpp文件使用了Matlab编译m文件生成的dll,在cpp中通过mxArray这个数据结构来和dll中的方法进行信息交换。
这样就在cpp中调用了matlab中的m文件实现的方法。

  • 鎬庢牱鐢╩atlab鐢熸垚vs鍙皟鐢ㄧ殑dll褰㈠紡鐨刢om缁勪欢
    绛旓細(1) 閫夋嫨鈥滃彲鎵ц鏂囦欢鈥濅笅鎷夋锛屾坊鍔狅細C:\Program Files\MATLAB\R2010b\bin\win32锛堟敞鎰忥細褰撳墠鐨凪athlab瀹夎鍦–:\Program Files涓嬮潰锛(2)閫夋嫨鈥滃寘鍚枃浠垛濅笅鎷夋锛屾坊鍔狅細C:\Program Files\MATLAB\R2010b\extern\include (3)閫夋嫨鈥滃紩鐢ㄦ枃浠垛濅笅鎷夋锛屾坊鍔:C:\Program Files\MATLAB\R2010b\extern\...
  • 濡備綍鐢╲s璋冭瘯matlab绋嬪簭
    绛旓細鍙互鍦ㄩ渶瑕佸仠姝㈢殑鍦版柟鍔犲叆鈥渒eyboard鈥濓紝閭d箞绋嬪簭杩愯鍒拌繖涓湴鏂规椂浼氫腑鏂紝鍛戒护鎻愮ず绗︿細鐢>>鍙樹负K>>銆傛鏃讹紝浣犲彲浠ュ湪K>>鍚庤緭鍏ュ彉閲忓悕鎴栬呬慨鏀瑰彉閲忕殑鍊笺傚鏋滄兂缁х画鎵ц浠g爜锛屽彲浠ユ寜F5閿傚鏋滄兂閫鍑鸿皟璇曪紝鍙互鍦↘>>鍚庤緭鍏bquita = 10;keyboard; % 鍦↘>>鍚庤緭鍏 "a=20;"锛堜笉瑕佸弻寮曞彿锛夛紝鍐...
  • matlab2014a鎬庝箞璁剧疆鎴鐢╒S2010缂栬瘧
    绛旓細娣诲姞Matlab2013a涓VS2013鐨勬敮鎸佹枃浠 鍏蜂綋璺緞涓猴細R2013a\bin\win32\mexopts VS2013_Support_For_Matlab_2013_32bit.zip 鍥犵郴缁熶负32浣嶏紝鎵浠ラ夋嫨32bit涓嬭浇锛岃В鍘嬪悗鐨勬枃浠禼opy鑷砿exopts鐩綍涓嬶紱 ok锛岃嚦姝ゅ彲浠ョ紪璇戯紝淇敼锛
  • 濡備綍灏MATLAB绋嬪簭缂栬瘧鎴愮嫭绔嬪彲鎵ц鐨勭▼搴
    绛旓細1銆佸畨瑁呯紪璇戝櫒銆傚彲鏈夊绉嶉夋嫨锛宮atlab鑷甫浜嗕竴涓狶CC锛屾帹鑽愪娇鐢╒C++6.0锛屾垜鍩轰簬VS 2003瀹炵幇銆2銆佽缃紪璇戝櫒銆鍦╩atlab鍛戒护琛岃緭鍏build 鈥搒etup浠ュ強mex 鈥搒etup锛岄夋嫨瀹夎鐨刢缂栬瘧鍣ㄣ3銆佽皟鐢ㄧ紪璇戝櫒銆傛澶浣跨敤MATLAB涓嬬殑涓涓狦UI骞冲彴deploytool涓嬪畬鍏ㄥ疄鐜般傚湪鍛戒护绐楀彛杈撳叆deploytool鍗冲彲鐪嬪埌銆傚叿浣撲娇鐢ㄦ柟娉曡Hel...
  • 濡備綍鍦∕ATLAB R2010a 涓娇鐢╒isual C++ 2010缂栬瘧鍣
    绛旓細1銆佸畨瑁呰ˉ涓VS2010MEXSupport.zip 鐢变簬MATLAB R2010a 鍙戝竷鐨勬椂闂磋姣 VS2010鏃╋紝鎵浠ュ湪璇ョ増鏈瘑鍒笉浜哣C++2010缂栬瘧鍣ㄣ備笉杩嘡2010a涔嬪悗鐨勭増鏈簲璇ヤ笉浼氭湁杩欑闂浜嗐傝В鍘嬭ˉ涓佸寘锛屽皢鍏朵腑鐨勬枃浠舵斁鍒 D:Program FilesMATLABR2010abinwin32mexopts 鏂囦欢澶逛笅銆2銆鍦∕ATLAB涓畨瑁匳C++ 2010 缂栬瘧鍣 鎵撳紑Matlab...
  • 2014matlab閰嶇疆vs2017
    绛旓細鑳姐傚湪2014matlab涓锛屾槸鑳介厤缃vs2017鐨勩MATLAB鏄編鍥組athWorks鍏徃鍑哄搧鐨勫晢涓氭暟瀛﹁蒋浠讹紝鐢ㄤ簬绠楁硶寮鍙戙佹暟鎹彲瑙嗗寲銆佹暟鎹垎鏋愪互鍙婃暟鍊艰绠楃殑楂樼骇鎶鏈绠楄瑷鍜屼氦浜掑紡鐜銆
  • 濡備綍vs2010mfc璋冪敤matlab 2010鐢熸垚dll杩涜缂栫▼
    绛旓細涓鍙ュ懡浠cc -W cpplib:add -T link:lib add.m 鍓嶉潰鐨刟dd琛ㄧず鐢熸垚鐨刣ll鏂囦欢鍚嶏紝鍚庨潰鐨刟dd.m椤惧悕鎬濅箟鏄.m鏂囦欢鍚嶃傜敓鎴愬悗浼氬鍑8涓枃浠讹紝鏈夌敤鐨勬槸add.ctfadd.dll add.lib add.h4涓枃浠讹紝鎹鏂扮増鐨Matlab涓嶄細鐢熸垚.ctf鏂囦欢銆備簩銆乂C6.0涓皟鐢ㄧ敓鎴愮殑dll鏂囦欢 涓婇潰鐢熸垚鐨刣ll鏂囦欢锛屾垜浠彲浠ュ熷姪VC6...
  • 濡備綍鐢╲s2010璋冪敤matlab
    绛旓細1銆 閰嶇疆matlab鐜 a) 鍦╟omand閲岃緭鍏ex 鈥搒etup绛夊懡浠わ紝鏄剧ず濡備笅锛氾紙妞渾鏍囪鐨勫嵆涓烘墜鍔ㄨ緭鍏ョ殑锛塨)鍦╟omand閲岃緭鍏build 鈥搒etup绛夊懡浠わ紝鏄剧ず濡備笅锛氾紙妞渾鏍囪鐨勫嵆涓烘墜鍔ㄨ緭鍏ョ殑锛2銆 鐢熸垚dll鏂囦欢 a)鍦―:\administrator\Documents\MATLAB鍒涘缓my.m鏂囦欢锛屽叿浣撲唬鐮佸涓嬶細b)鍦╩atlab鐨刢ommand琛岃緭鍏cc -...
  • 濡備綍浣跨敤matlab涓vs缂栬瘧鍣
    绛旓細锛1锛鍦 MATLAB 鐜涓娇鐢 mcc 鍛戒护锛涳紙2锛夊湪绯荤粺鍛戒护鐜涓娇鐢 mcc.exe 锛堝湪Windows涓婏級锛涳紙3锛夊湪 MATLAB 鐜涓娇鐢 Deployment Tool銆4. 绋嬪簭鍙戝竷 锛1锛浣跨敤 MATLAB 鍛戒护 builder锛涳紙2锛変娇鐢 Deployment Tool 鍥惧舰鍖栧伐鍏枫備竴鑸潵璇达紝闇瑕佸彂甯冪殑鏂囦欢鏈3涓細锛1锛夌紪璇戝緱鍒扮殑鍙墽琛屾枃浠舵垨搴撳嚱鏁...
  • 濡備綍鐢╲s2010璋冪敤matlab
    绛旓細1. 棣栧厛鍦≧鐩樻牴鐩綍涓鍒涘缓"DLL"鏂囦欢澶癸紝鐒跺悗鎶妔pline.m鍜宑hckxy.m涓や釜鏂囦欢鎷疯礉鍒"R:\DLL"鏂囦欢澶逛笅锛堝湪鎴戠殑鏈哄櫒涓婏紝spline.m浣嶄簬鏂囦欢澶"C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\"涓嬶紝chckxy.m浣嶄簬鏂囦欢澶"C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\private\"涓嬶級...
  • 扩展阅读:在线linux网站 ... matlab下载安装永久免费 ... 摩天轮matlab地址2020 ... matlab源代码网站免费 ... matlab下载正规免费网站 ... 中国哪些高校matlab被禁 ... matlab xlswrite ... 在线使用matlab的网站 ... 免费下载matlab源码的网站 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网