用VS2005(2008也同样)调用MATLAB2010的m文件函数
2011-12-18 15:15
369 查看
关于vs2008(2005)与matlab的其他的混合编程请看网摘,此处仅仅转载vc++怎么调用matlab自定义函数(即自己写的m文件函数)
http://blog.sina.com.cn/s/blog_5fd4166b0100pmk9.html
一定要按如下配置好,特别注意的是第一步。否则不能初始化程序,而且所有矩阵相关操作不能进行内存分配
1. matlab:mex -setup 选择vs2005
mbuild -setup 选择vs2005
2. 写matlab函数:
例如:function m=mypascal(n)
m=pascal(n);
m=m';
保存为:test.m
3. 将matlab函数转为VC++可调用的库函数:
mcc -W lib:libtest -T link:lib test.m
其中,libtest为生成文件的名字,test.m为要转换的m文件
—————————————————————————————————————————————————
4. VS2005配置:Tools->Options->Projects and Solutions->VC++ Directions
Include Files中添加:...\MATLAB\R2010b\extern\include
lib Files中添加:...s\MATLAB\R2010b\extern\lib\win32\microsoft
5.新建VS2005工程,将第3步生成的.h .lib .dll文件拷到该工程目录中,并添加如下配置:
#include "libtest.h"
linker->Input->Additional Dependencies: libtest.lib mclmcrrt.lib
6.调用
① 初始化:if (!mclInitializeApplication(NULL,0))
{
//AfxMessageBox("不能初始化程序");
}
if (!libtestInitialize())
{
//AfxMessageBox("不能初始化连接库");
}
②调用:double data;
data=double(m_size);mxArray *size; //输入参数m_size可以是任意正整数
mxArray *out=NULL; //输出参数
//创建mxArray数据对象,双精度标量
size=mxCreateDoubleScalar(data);
//内存复制赋值
memcpy(mxGetPr(size), &data, 1*sizeof(double));
mlfTest(1, &out, size);//函数调用 [第一个参数表示输出参数的个数这里有一个]
CString strtext;
for (i=0;i<m_size;i++)
for(j=0;j<m_size;j++)
{
strtext.Format("%.f", *(mxGetPr(out)+i*m_size+j));
cout << strtext < }
③终止:libtestTerminate();//终止进程
mclTerminateApplication();//终止MCR
http://blog.sina.com.cn/s/blog_5fd4166b0100pmk9.html
一定要按如下配置好,特别注意的是第一步。否则不能初始化程序,而且所有矩阵相关操作不能进行内存分配
1. matlab:mex -setup 选择vs2005
mbuild -setup 选择vs2005
2. 写matlab函数:
例如:function m=mypascal(n)
m=pascal(n);
m=m';
保存为:test.m
3. 将matlab函数转为VC++可调用的库函数:
mcc -W lib:libtest -T link:lib test.m
其中,libtest为生成文件的名字,test.m为要转换的m文件
—————————————————————————————————————————————————
4. VS2005配置:Tools->Options->Projects and Solutions->VC++ Directions
Include Files中添加:...\MATLAB\R2010b\extern\include
lib Files中添加:...s\MATLAB\R2010b\extern\lib\win32\microsoft
5.新建VS2005工程,将第3步生成的.h .lib .dll文件拷到该工程目录中,并添加如下配置:
#include "libtest.h"
linker->Input->Additional Dependencies: libtest.lib mclmcrrt.lib
6.调用
① 初始化:if (!mclInitializeApplication(NULL,0))
{
//AfxMessageBox("不能初始化程序");
}
if (!libtestInitialize())
{
//AfxMessageBox("不能初始化连接库");
}
②调用:double data;
data=double(m_size);mxArray *size; //输入参数m_size可以是任意正整数
mxArray *out=NULL; //输出参数
//创建mxArray数据对象,双精度标量
size=mxCreateDoubleScalar(data);
//内存复制赋值
memcpy(mxGetPr(size), &data, 1*sizeof(double));
mlfTest(1, &out, size);//函数调用 [第一个参数表示输出参数的个数这里有一个]
CString strtext;
for (i=0;i<m_size;i++)
for(j=0;j<m_size;j++)
{
strtext.Format("%.f", *(mxGetPr(out)+i*m_size+j));
cout << strtext < }
③终止:libtestTerminate();//终止进程
mclTerminateApplication();//终止MCR
相关文章推荐
- 【从业余项目中学习2】C# 实现调用Matlab函数(Visual Studio:2008, Matlab:R2009a)
- 两步解决python调用Matlab的脚本和函数文件
- VC调用matlab中定义的.m文件中的函数的实例
- VC调用matlab中定义的.m文件中的函数的实例
- VC调用matlab中定义的.m文件中的函数的方法
- matlab---位于多个文件的函数之间的调用
- MATLAB调用C文件再在C文件中调用MATLAB函数(即mex文件中调用matlab函数)
- VC调用matlab中定义的.m文件中的函数的实例
- MATLAB的M文件调用另一个M文件的函数
- VC调用matlab中定义的.m文件中的函数的实例
- VC调用matlab中定义的.m文件中的函数的实例
- 64位win7下vc2010如何调用matlab2012a中生成的dll文件
- Python 调用Matlab的函数或者调用M文件方法
- VC调用matlab中定义的.m文件中的函数的实例
- Visual Studio 2008(C#)调用MATLAB 2008写的函数
- [初学笔记] matlab中 函数m文件创立,匿名函数的建立和调用
- 在vs中用C的编程方式生成.dll文件并且动态、静态调用dll中的函数
- MFC调用库文件函数pragma comment()
- 【Matlab】1. Matlab效率提升——调用C语言编写的函数 (mex,matlab C API)
- Java调用MATLAB函数