编译matlab的s函数

时间:2012-08-05 16:13:54

标签: c++ matlab

我一直在尝试使用我的c ++代码在matlab中创建一个s-function块。我正在使用以下mexopts.bat文件

  

@echo off

     

设置MATLAB =%MATLAB%

     

设置PATH =%PATH%; c:\ cygwin \ bin

     

设置MW_TARGET_ARCH = win64

     

设置COMPILER = x86_64-w64-mingw32-g ++

     

设置COMPFLAGS = -c -fexceptions“-I%MATLAB%\ extern \ include”

     

设置OPTIMFLAGS = -O3

     

设置DEBUGFLAGS = -g -Wall

     

设置NAME_OBJECT = -o

     

设置PRELINK_CMDS1 = echo EXPORTS> mex.def& echo mexFunction>> mex.def

     

设置LIBLOC =“%MATLAB%\ bin \ win64”

     

设置LINKER = x86_64-w64-mingw32-g ++

     

设置LINKFLAGS = -static-libgcc -shared mex.def -L%LIBLOC%   -static-的libstdc ++

     

设置LINKFLAGSPOST = -lmex -lmx -lmwlapack -lmwblas -lstdc ++

     

设置LINKOPTIMFLAGS = -O3

     

设置LINKDEBUGFLAGS = -g -Wall

     

设置LINK_FILE =

     

设置LINK_LIB =

     

设置NAME_OUTPUT = -o“%OUTDIR %% MEX_NAME %% MEX_EXT%”

     

设置RSP_FILE_INDICATOR =

     

设置POSTLINK_CMDS1 = del mex.def

我能够使用'mex'函数从matlab成功编译样本mexfunction文件,但是当我尝试编译s函数时(我用matlab获取了示例文件)我得到以下错误

C:\Program Files\MATLAB\R2012a\simulink\include/simstruc.h:357:3: error: #error Must define one of RT, NRT, MATLAB_MEX_FILE, SL_INTERNAL, or FIPXT_SHARED_MODULE

C:\Program Files\MATLAB\R2012a\simulink\include/simstruc.h:467:78: fatal error: rt_matrx.h: No such file or directory
compilation terminated.

我确信c ++文件是正确的,因为我从matlab示例中获取它们

1 个答案:

答案 0 :(得分:3)

所有S函数都需要定义以下预处理程序符号。

MATLAB_MEX_FILE
S_FUNCTION_LEVEL=2
S_FUNCTION_NAME=<your-sfun-name>

使用COMPFLAGS指令将这些内容添加到批处理文件中的-D