博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vs2008中调用matlab生成的dll
阅读量:7291 次
发布时间:2019-06-30

本文共 1534 字,大约阅读时间需要 5 分钟。

matlab版本为:matlab7.11.0(R2010b)

vs2008
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文件实现的方法。
mcc命令说明:

转自:

转载地址:http://mmrjm.baihongyu.com/

你可能感兴趣的文章
lsnrctl启动报错,Linux Error: 29: Illegal seek
查看>>
IDEA github
查看>>
linux 驱动学习笔记05--文件系统与设备文件系统
查看>>
unresolved external symbol __forceAtlDllManifest错误的解决
查看>>
Linux的.run文件简单制作
查看>>
ubuntu解压命令(转)
查看>>
C#获取获取北京时间多种方法
查看>>
动态语言的灵活性是把双刃剑 -- 以 Python 语言为例
查看>>
1. 字节序的转换
查看>>
ubuntu14.04LTS下ECLIPSE+JAVA搭建
查看>>
学习RxJS: 导入
查看>>
PowerDesigner大小写转换
查看>>
纯 CSS 利用 label + input 实现选项卡
查看>>
Ubuntu 上安装R
查看>>
How .Net code can call unmanaged code?
查看>>
Archlinux安装配置以及遇到的问题
查看>>
怎么写出好代码——坏味道
查看>>
Java将CST的时间字符串转换成需要的日期格式字符串
查看>>
cisco 查看接口进出流量
查看>>
Dhcp+nfs+tftp+ks 完全无人值守安装linux操作系统
查看>>