C++调用Matlab的.m编程文件

一 建立matlab的m文件
function y=Vmax(a, b)
		if a > b
			y = a;
		else
			y = b;
		end
		end
		保存为myMax.m


二 打开matlab,在命令行状态下键入:mex -setup
	然后出现如下提示:
	要选择不同的语言,请从以下选项中选择一种命令:
	 mex -setup C++ 
	 mex -setup FORTRAN

	 选择mex -setup C++ 
	 
三 mbuild –setup
    要选择不同的语言,请从以下选项中选择一种命令:
	 mex -setup C++ -client MBUILD 
	 mex -setup FORTRAN -client MBUILD
	 
	 选择mex -setup C++ -client MBUILD 
	 
四 在matlab命令行中输入:mcc -t -h -L C -W lib:myMax -T link:lib myMax.m

	然后在目录下出现了 myMax.h    myMax.lib     myMax.dll,供C++使用
	
	
	
C++代码:
#include "stdafx.h"


//还需要要配置一下VS环境中的包含目录和库目录
#include <stdlib.h>
#include <stdio.h>
#include <string.h>


#include "mymax.h"
#pragma comment(lib, "myMax.lib")
#pragma comment(lib, "mclmcrrt.lib")


int main()
{
	do
	{
		if (!myMaxInitialize()) //必须,否则mwArray无法使用,应该是加载一些matlab的库
		{
			break;
		}


		double a = 1;
		double b = 5;


		mxArray *A = mxCreateDoubleMatrix(1, 1, mxREAL);
		mxArray *B = mxCreateDoubleMatrix(1, 1, mxREAL);
		mxArray *C = mxCreateDoubleMatrix(1, 1, mxREAL);


		double *A2 = mxGetPr(A);
		double *B2 = mxGetPr(B);
		double *C2 = mxGetPr(C);


		memcpy(A2, &a, sizeof(double));
		memcpy(B2, &b, sizeof(double));


		bool bre = mlfVmax(1, &C, A, B);
		double *tmp = mxGetPr(C);
	} while (false);


	return 1;
}
</pre><pre code_snippet_id="1851050" snippet_file_name="blog_20160825_4_252400" name="code" class="plain" style="color: rgb(50, 62, 50); font-size: 14px; line-height: 21px;">参考文章:http://blog.sina.com.cn/s/blog_5f853eb10100vfnm.html


 
 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值