用C++实现S函数。构建错误
我是MATLAB的新手。我试图用matlab帮助中的S函数示例来构建我的模型。这是sfun_计数器_cpp.cpp。源代码位于matlabroot/simulink/src/sfun\u counter\u cpp.cpp或on中 <>首先,我用MeX命令构建C++函数,如下所述: . 构建成功,并创建了sfun_计数器_cpp.mexw32。之后,我创建了一个S功能块,该功能块提供从我的框图访问sfun_counter_cpp的权限,单击增量构建并获得一条错误消息OPUS MAKE:不知道如何创建“sfun_counter_cpp.cppm50”。停下来用C++实现S函数。构建错误,c++,matlab,simulink,C++,Matlab,Simulink,我是MATLAB的新手。我试图用matlab帮助中的S函数示例来构建我的模型。这是sfun_计数器_cpp.cpp。源代码位于matlabroot/simulink/src/sfun\u counter\u cpp.cpp或on中 首先,我用MeX命令构建C++函数,如下所述: . 构建成功,并创建了sfun_计数器_cpp.mexw32。之后,我创建了一个S功能块,该功能块提供从我的框图访问sfun_counter_cpp的权限,单击增量构建并获得一条错误消息OPUS MAKE:不知道如何创建
*** Found User-Code File TestModell_usr.c from 05-Jul-2013 15:38:59
*** Found User Makefile TestModell_usr.mk from 05-Jul-2013 15:38:59
*** Optional User Variable Description File TestModell_usr.trc not available
.
### Processing Template Makefile: C:\dSPACE\matlab\rti1005\m\rti1005.tmf
### TestModell.mk which is generated from C:\dSPACE\matlab\rti1005\m\rti1005.tmf is up to date
### Building TestModell: dsmake -f TestModell.mk GENERATE_REPORT=0 EXTMODE_STATIC_ALLOC=0 TMW_EXTMODE_TESTING=0 EXTMODE_STATIC_ALLOC_SIZE=1000000 EXTMODE_TRANSPORT=0
BUILDING APPLICATION "TestModell" (Multiple Timer Task Mode)
WORK DIRECTORY "c:\MyTest"
BUILD DIRECTORY "c:\MyTest\TestModell_rti1005"
TARGET COMPILER "C:\PPCTools37"
COMPILING "TestModell.c"
COMPILING "TestModell_data.c"
COMPILING "TestModell_trc_ptr.c"
COMPILING "rtGetInf.c"
COMPILING "rtGetNaN.c"
COMPILING "C:\PROGRA~2\MATLAB~1\rtw\c\src\rt_matrx.c"
COMPILING "rt_nonfinite.c"
COMPILING "C:\dSPACE\MATLAB\RTI1005\C\rt_printf.c"
COMPILING "C:\dSPACE\MATLAB\RTI1005\C\rti_sim_engine.c"
OPUS MAKE: Don't know how to make 'sfun_counter_cpp.cppm50'. Stop.
----------------------------------------------------------------------
*** Errors occurred during make process.
*** Inspect MATLAB Command Window for details.
*** Aborting RTI build procedure for model TestModell.
----------------------------------------------------------------------
*** Stopped RTI build procedure for model: TestModell.
----------------------------------------------------------------------
问题解决了。我设定 用户\u BUILD\u CPP\u APPL=ON 及 用户(SRCS)= 用户\u SRCS=sfun\u计数器\u cpp.cpp 产生错误
< lnkppc > (E) #A0307-D Symbol: sfun_counter_cpp in file: sfun_counter_cpp.cppm50 already defined in file: sfun_counter_cpp.cppm50
为什么要使用dSPACE目标?您能否先尝试GRT目标,看看问题是来自目标还是S函数本身?我如何尝试GRT?在“配置参数”窗口中,转到“代码生成”节点,根据您使用的版本调用可能略有不同,然后选择GRT目标。在尝试从具有S函数的模型生成代码之前,您确实需要了解并理解使用Simulink生成代码的基本原理。查看旧版本中Simulink Coder或Real-Time Workshop的文档。如果您只是想模拟模型,而不是生成代码,您不需要增量构建,只需按play来运行模型。您好,am304,感谢您提供的增量构建提示和play按钮。导致此错误的原因是我没有将cpp文件添加到TestModell_usr.mk文件中。我添加了两行USER\u BUILD\u CPP\u APPL=ON和USER\u SRCS=sfun\u counter\u CPP.CPP。现在我还有一个错误: