3

私は自分のc++コードを使ってmatlabでs-functionブロックを作成しようとしています。次のmexopts.batファイルを使用しています。

@エコーオフ

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++を設定します

set 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=を設定します

set NAME_OUTPUT = -o "%OUTDIR %% MEX_NAME %% MEX_EXT%"

RSP_FILE_INDICATOR=を設定します

POSTLINK_CMDS1 =delmex.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++ファイルが正しいと確信しています、coz私はmatlabの例からそれらを取りました

4

1 に答える 1

3

すべてのS-Functionでは、次のプリプロセッサシンボルを定義する必要があります。

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

ディレクティブCOMPFLAGSを使用して、それらをバッチファイルのに追加します。-D

于 2012-08-05T17:01:03.437 に答える