Visual Studio 2010 + MATLAB 2011a 中进行如下在实验(系统Windows 7 pro 64bit)
注:要求VS版本 < Matlab版本
>> mex -setup
Welcome to mex -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2011a/win64.html
Please choose your compiler for building MEX-files:
Would you like mex to locate installed compilers [y]/n? y
Select a compiler:
[1] Microsoft Visual C++ 2010 in D:\Program Files (x86)\Microsoft Visual Studio 10.0
[0] None
Compiler: 1
Please verify your choices:
Compiler: Microsoft Visual C++ 2010
Location: D:\Program Files (x86)\Microsoft Visual Studio 10.0
Are these correct [y]/n? y
***************************************************************************
Warning: MEX-files generated using Microsoft Visual C++ 2010 require
that Microsoft Visual Studio 2010 run-time libraries be
available on the computer they are run on.
If you plan to redistribute your MEX-files to other MATLAB
users, be sure that they have the run-time libraries.
***************************************************************************
Trying to update options file: C:\Users\zhang\AppData\Roaming\MathWorks\MATLAB\R2011a\mexopts.bat
From template: D:\PROGRA~1\MATLAB\R2011a\bin\win64\mexopts\msvc100opts.bat
Done . . .
**************************************************************************
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the new
API. You can find more information about this at:
http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9
Building with the -largeArrayDims option enables the new API.
**************************************************************************
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <mex.h>
2
3 double addtiontest(double x, double y);
4 double doublesize(double a, double b);
5
6 void mexFunction(int nlhs, mxArray *plhs[], int nrhs,const mxArray *prhs[])
7 {
8 double*a;
9 double b, c;
10
11 plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
12 a = mxGetPr(plhs[0]);
13 b =*(mxGetPr(prhs[0]));
14 c =*(mxGetPr(prhs[1]));
15 *a = addtiontest(b, c);
16 }
17
18 double addtiontest(double x, double y)
19 {
20 double z;
21 z = doublesize(x,y);
22 return z;
23 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 double doublesize(double a, double b)
2 {
3 double c;
4 c =2*(a+b)+100;
5 return c;
6 }
>> mex addtiontest.c doublesize.c
生成文件:addtiontest.mexw64
>> f = addtiontest(1.2,2)
f =
106.4000