永发信息网

怎样用matlab生成vs可调用的dll形式的com组件

答案:1  悬赏:60  手机版
解决时间 2021-03-25 04:04
怎样用matlab生成vs可调用的dll形式的com组件
最佳答案
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
#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 printf("%f\n",res[i]);
delete[] res;
mxDestroyArray(N);
mxDestroyArray(R);

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

上述cpp文件使用了Matlab编译m文件生成的dll,在cpp中通过mxArray这个数据结构来和dll中的方法进行信息交换。
这样就在cpp中调用了matlab中的m文件实现的方法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大蒜瓣的侧芽,可用来繁殖,这应属于A.有性生
如何选择好的住宅房型
家养秘鲁天轮柱,长太高该如何处理?
苹果手机200元可以欢苹果手机
家用空气开关60安培大吗?
铁路外扩多少是铁路面积
G1654高铁经停站和时间
求一款水质无油配方,保湿效果好的粉底液,适
韩剧灿烂人生片尾曲深深的叹息的罗马音歌词
怀孕41周,羊水2.9厘米,这样的羊水少吗,胎
如果武汉直辖出去,哪个城市会成为湖北的省会
通化武装部得联系方式是多少
对对子动摇对什么
晨阳灯饰地址好找么,我有些事要过去,
北京有黄牛挂号么,急
推荐资讯
云南大理英才英语补习班
无家可归在哪里寻救助
哪有正宗的蜂蜜
因洪水对k9076有影响吗?
10-15?答对你是最棒的
甜汤什么时候喝比较好,饭前还是饭后?
敦草街我想知道这个在什么地方
哪些调料可以使肉变嫩
武林外传手游电脑版安卓模拟器可以用吗?
《镇魔曲网页版》的彩翼在哪里可以捉到??
什么是原生质层、原生质体、原生质,三者有什
It’s so hot today. Why not stay at home a
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?