2015-10-29 4 views
0

Я пытаюсь скомпилировать предварительно сгенерированный код из Simulink S-функции застройщика и я получаю сообщение об ошибке:Matlab S-функция строитель с Visual Studio 2013 - отсутствует rtwtypes.h

fatal error C1083: Cannot open include file: 'rtwtypes.h': No such file or directory 

Я пошел через каждый каталог include в matlab и simulink, и нет такого заголовочного файла. Я использую Matlab 2014b. В чем может быть проблема?

BTW. Я могу скомпилировать файлы MEX без проблем.

My %MATLAB_ROOT%\extern\include folder

Я попытался в том числе "взломан" файл найден в сети: Header rtwtypes.h source

Но это не работает так, как я ожидал, теперь моя ошибка:

fatal error C1189: #error : Must define one of RT, NRT, MATLAB_MEX_FILE, SL_INTERNAL, or FIPXT_SHARED_MODULE 
+0

Это в MATLABROOT \ extern. –

+0

Это не так. По крайней мере не для меня. По крайней мере, не в MATLABROOT \ extern \ include, а не в MATLABROOT \ extern \ lib. – user1598527

+0

Это странно, потому что это было в MATABROOT/extern/include для многих, многих выпусков, и вот где документ говорит: [Шаблоны для C-функций] (http://www.mathworks.com/help/simulink /sfg/templates-for-cs-functions.html). –

ответ

0

Я понятия не имею, почему rtwtypes.h не находится в matlab или simulink include directory ... Но решение для моей проблемы было:

  1. Включите found on network rtwtypes.h файл в проект
  2. Добавить строку выше #define S_FUNCTION_LEVEL 2 в вашем вашей-S-функции-name.c:

#define MATLAB_MEX_FILE

Он строит без проблем. Он работает так же хорошо, как стандартная функция, скомпилированная Matlab? Я понятия не имею, может потребоваться какой-то тест.

+0

Спасибо за помощь. По какой-то причине rtwtypes.h не генерируется в моем проекте. Можно ли установить его в настройках (или в другом месте)? – user1598527

+0

При необходимости, rtwtypes.h - это файл, который автоматически генерируется во время процесса сборки и должен находиться в том же каталоге, что и сгенерированный автоматически исходный код. –

+0

Ваше исправление - это немного взломать, что означает, что код будет компилироваться только для настольных симуляторов, а не для любого потенциального использования в реальном времени, что может и не быть проблемой для вас. Если да, то вам нужно попытаться выяснить, почему файл не сгенерирован, но код ожидает его. –

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