Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C++实现S函数。构建错误_C++_Matlab_Simulink - Fatal编程技术网

用C++实现S函数。构建错误

用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:不知道如何创建

我是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”。停下来

*** 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。现在我还有一个错误:E A0307-D Symbol:sfun_counter_cpp in file:sfun_counter_cpp.cppm50已经在文件中定义了:sfun_counter_cpp.cppm50对不起,我不知道,但我会再次问:您是真的试图从您的模型生成代码,还是只想运行模拟您的模型?对于模拟,您不需要增量构建。要生成代码,您真的需要dSPACE目标吗?同样,您真的想/需要为dSPACE目标生成代码吗?作为调试问题的第一步,最好使用标准GRT目标。一旦你让它与GRT一起工作,你就可以进入你的最终目标,并且有更多的机会工作。问题似乎出在编译器/链接器上,而不是代码生成过程本身。是的,我确实需要为dSPACE目标生成代码。我在Matlab中找到了如何选择GRT目标。谢谢