gpt4 book ai didi

c++ - 为matlab编译s函数

转载 作者:太空狗 更新时间:2023-10-29 21:26:22 28 4
gpt4 key购买 nike

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

@echo off

set MATLAB=%MATLAB%

set PATH=%PATH%;c:\cygwin\bin

set MW_TARGET_ARCH=win64

set COMPILER=x86_64-w64-mingw32-g++

set COMPFLAGS=-c -fexceptions "-I%MATLAB%\extern\include"

set OPTIMFLAGS=-O3

set DEBUGFLAGS=-g -Wall

set NAME_OBJECT=-o

set PRELINK_CMDS1=echo EXPORTS > mex.def & echo mexFunction >> mex.def

set LIBLOC="%MATLAB%\bin\win64"

set LINKER=x86_64-w64-mingw32-g++

set LINKFLAGS= -static-libgcc -shared mex.def -L%LIBLOC% -static-libstdc++

set LINKFLAGSPOST= -lmex -lmx -lmwlapack -lmwblas -lstdc++

set LINKOPTIMFLAGS=-O3

set LINKDEBUGFLAGS= -g -Wall

set LINK_FILE=

set LINK_LIB=

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

set RSP_FILE_INDICATOR=

set 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 示例中获取了它们

最佳答案

所有 S-Function 都需要定义以下预处理器符号。

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

使用 -D 指令将它们添加到批处理文件中的 COMPFLAGS

关于c++ - 为matlab编译s函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817974/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com