我一直在尝试用我的 c++ 代码在 matlab 中制作一个 s-function 块。我正在使用以下 mexopts.bat 文件
@echo 关闭
设置 MATLAB=%MATLAB%
设置 PATH=%PATH%;c:\cygwin\bin
设置 MW_TARGET_ARCH=win64
设置编译器=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-function(我使用 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 示例中获取它们