一 建立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