2013-07-17 3 views
0

Я новичок в MATLAB. Я пытаюсь построить модем с примером для S-Function из справки matlab. Это sfun_counter_cpp.cpp. Исходный код доступен в «matlabroot/simulink/src/sfun_counter_cpp.cpp» или по адресу http://www-rohan.sdsu.edu/doc/matlab/toolbox/simulink/sfg/sfun_c++2.html.S-Function с C++. Ошибка сборки

Сначала я строю C++ S-функцию с командой «mex», как описано здесь: http://www.mathworks.de/de/help/simulink/sfg/building-c-s-functions.html. Сборка выполнена успешно, и создается sfun_counter_cpp.mexw32. После этого я создаю блок S-Function, который предоставляет доступ к 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. 
---------------------------------------------------------------------- 
+0

Почему вы используете цель DSPACE? Можете ли вы попытаться с помощью целевой задачи GRT сначала проверить, исходит ли проблема от цели или самой S-функции? – am304

+0

Как я могу попробовать его с помощью GRT? –

+1

В окне «Параметры конфигурации» перейдите к узлу «Генерация кода» (его можно вызвать несколько иначе, в зависимости от того, какой выпуск вы используете) и выберите цель GRT. Вам действительно нужно знать и понимать основную часть генерации кода с помощью Simulink, прежде чем пытаться сгенерировать код из модели с помощью S-функции. Проверьте документацию для Simulink Coder (или Work-Workshop в старых версиях). Если вы просто хотите имитировать модель, а не генерировать код, вам не нужна «инкрементная сборка», просто нажмите play, чтобы запустить модель. – am304

ответ

0

Проблема решена. Я установил

USER_BUILD_CPP_APPL = ON

и

USER_SRCS =

USER_SRCS = sfun_counter_cpp.cpp выдает ошибку

<lnkppc> (E) #A0307-D Symbol: sfun_counter_cpp in file: sfun_counter_cpp.cppm50 already defined in file: sfun_counter_cpp.cppm50 
+0

Опять же, вы действительно хотите/должны генерировать код для цели dSPACE? В качестве первого шага для отладки этой проблемы было бы лучше использовать стандартную цель GRT. После того, как вы заработаете с GRT, вы можете перейти к своей конечной цели, и у него будет больше шансов на работу. Проблема, похоже, связана с вашим компилятором/компоновщиком, а не с процессом генерации кода. – am304

+0

Да, мне действительно нужно сгенерировать код для цели dSPACE. Я узнал, как выбрать цель GRT в моей Matlab. Благодарю. –

Смежные вопросы