matlab2014调用vs2015进行混合编译生成mex文件

 一、matlab调用vs2015进行混合编译的mex文件

        matlab的版本要到2015b才支持vs2015,当然如果你的matlab版本是2014,不想重装matlab2015也行,需要替换其mexopts文件夹,估计就类似于一个mex的Makefile文件,路径为R2014a\bin\win64\mexopts。下载之,替换即可。mexopts文件夹的下载地址为mexopts点击下载,之后做以下步骤编译即可。

       1、在matlab命令行窗口输入mex -setup

         显示如下:如果你安装了多个版本的VS,选择其中你指定的版本即可。matlab2014调用vs2015进行混合编译生成mex文件_第1张图片

      2、在matlab命令行窗口执行命令:mex -v yourfile.c(注意:yourfile.c为你想编译的源文件,.cpp文件好像也可以

     例如我的.c文件为decodeBits.c

     执行命令:mex -v decodeBits.c,会出现以下结果,当前目录下会生成一个名为decodeBits.mexw64的文件,在matlab里面就可以调用这个文件了。

     matlab2014调用vs2015进行混合编译生成mex文件_第2张图片


decodeBits.c

//Author:  David Varodayan ([email protected])
//Date:    May 8, 2006

#include "mex.h"
#include 
#include 

#define max(a,b) (((a)>(b))?(a):(b))

//decodeBits() finds the minimum rate for which the decoded bitstream matches
//the transmitted portion of the accumulated syndrome.
//The number of residual bit errors is also calculated.
void decodeBits(double *LLR_intrinsic, double *accumulatedSyndrome, double *source, char *ladderFile,
                double *decoded, double *rate, double *numErrors)
{
    FILE *fp;
    int n, m, nzmax, *ir, *jc;
    int numCodes, totalNumInc, numInc, *txSeq;
    int code, k, currIndex, prevIndex;
    double *syndrome;
    
    fp = fopen(ladderFile, "r");
 
    fscanf(fp, "%d", &numCodes);
    fscanf(fp, "%d", &n);
    fscanf(fp, "%d", &nzmax);
    fscanf(fp, "%d", &totalNumInc);
        
    ir = mxCalloc(nzmax, sizeof(int));
    jc = mxCalloc(n+1, sizeof(int));
    txSeq = mxCalloc(totalNumInc, sizeof(int)); //actual length: numInc
    syndrome = mxCalloc(n, sizeof(double)); //actual length: m
    
    for(k=0; k

   注意:        

       (1).c文件中是必须有下面的函数作为主函数(类似main函数的地位),否则会报类似于“error LNK2001: 无法解析的外部符号 mexFunction“的错误。

   // Matlab interface Function
   // 参数:
   //  nlhs和nrhs表示调用该函数时返回值和参数的个数
   //  prhs[]和plhs[]表示参数和返回值数组
   void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
    {
           ...
    }

       (2)还有需要#include等等。

你可能感兴趣的:(matlab相关)