Когда вы генерируете код для модели, генератор кода по умолчанию создает совместно использованные служебные файлы, которых требует модель. Когда вы генерируете код с различными релизами, генераторы кода могут произвести функционально идентичные совместно используемые файлы, которые содержат некоторые нефункциональные различия. Например, различные комментарии и различный стиль кодирования. Когда вы используете тот же релиз, чтобы сгенерировать код для различных моделей в различных папках, можно также произвести совместно используемые файлы с нефункциональными различиями. Например, если вы задаете различный ParenthesesLevel
или значения ExpressionFolding
для моделей, генератор кода может произвести совместно используемые файлы, которые содержат различные комментарии или различные стили кодирования.
Интегрированный код, который включает функционально идентичные совместно используемые файлы:
Является более дорогим, чтобы проверить, потому что каждый совместно используемый файл требует верификации.
Производит ошибки компиляции, если совместно используемые файлы задают дублирующиеся символы.
Если у вас есть лицензия Embedded Coder®, можно избежать этих проблем путем определения повторного использования разделяемого кода от существующей папки, например, библиотеки только для чтения проверенного кода. В этом случае генератор кода не создает новые совместно использованные служебные файлы. Процесс сборки использует внешний код или ранее сгенерировал совместно использованный служебный код от папки. Администратор поддерживает и обновляет библиотеку только для чтения.
В поле Configuration Parameters> Code Generation> Interface> Advanced parameters> Existing shared code введите полный путь в свою разделяемую папку кода.
Проверьте, что Configuration Parameters> Diagnostics> Advanced parameters> диагностика Use only existing shared code установлен в error
(значение по умолчанию).
Удалите папку slprj
или переместитесь в новую рабочую папку.
Создайте свою модель. Если вы не видите ошибки, ваша разделяемая папка кода содержит необходимые совместно использованные служебные файлы.
Если файлы отсутствуют в существующей разделяемой папке кода, вы видите ошибку. Продолжать генерацию кода с локально сгенерированной версией пропавших без вести совместно использовало служебные файлы:
Установите Configuration Parameters> Diagnostics> Advanced parameters> Use only existing shared code к warning
.
Восстановите свою модель. Процесс генерации кода использует локально сгенерированную версию совместно использованных служебных файлов пропавших без вести.
Предоставьте администратору проверенной библиотеки кода с вашей моделью и информацией о пропавших без вести совместно использованных служебных файлов. С моделью администратор генерирует необходимые совместно использованные служебные файлы. Используя sharedCodeUpdate
, администратор добавляет файлы в существующую разделяемую папку кода.
Если вы требуете повторного использования разделяемого кода для компонента, экспортируемого от предыдущего релиза, предоставляете администратору информацию о местоположении папки сборки для компонента. Администратор может использовать sharedCodeUpdate
, чтобы скопировать разделяемый код для компонента к существующей разделяемой папке кода.
Когда файлы будут доступны в существующей разделяемой папке кода, повторите шаги 1-4.
Если разделяемый служебный код сгенерирован от подсистем библиотеки, которые совместно используются через модели (Simulink Coder), вы не можете снова использовать код через релизы, потому что код специфичен для релиза — имя символа и искажение имени файла включают номер выпуска. Администратор должен добавить разделяемый служебный код, сгенерированный для каждого релиза к разделяемой папке кода.
Функция sharedCodeUpdate
может добавить файлы в разделяемую папку кода, которые имеют идентичный довольный, но различный файл и имена функций. Это поведение полезно, когда у вас есть различные компоненты модели, которые требуют их собственных разделяемых служебных функций. Несмотря на то, что некоторый код дублирован, различные компоненты модели могут получить доступ к разделяемым служебным функциям, с которыми они были проверены. Чтобы обеспечить компоненты модели, чтобы иметь их собственные версии разделяемых служебных функций, сконфигурируйте правила именования вставить имя модели в разделяемые служебные идентификаторы (Simulink Coder).
Для большинства разделяемых служебных файлов кода можно задать основные копии, которые можно снова использовать через релизы, не изменяя файлы. С некоторыми файлами, например, rtwtypes.h
, и zero_crossing_types.h
, существуют ситуации, где ручное редактирование требуется, чтобы производить основные копии, которые можно использовать со сгенерированным кодом от различных релизов. Например:
Файл rtwtypes.h
, сгенерированный релизами до и включая R2013a, содержит контрольную сумму.
/* This ID is used to detect inclusion of an incompatible rtwtypes.h */ #define RTWTYPES_ID_C08S16I32L64N64F0
rtwtypes.h
, который вы хотите включать в свое интегрирование, скопируйте соответствующий оператор #define
в свою основную копию rtwtypes.h
.В R2015a, определения пересечения нулем, перемещенные от rtwtypes.h
в zero_crossing_types.h
. Чтобы создать файл rtwtypes.h
, который совместим со сгенерированным типовым кодексом от различных релизов в вашей основной копии rtwtypes.h
, вставляют этот оператор.
#include "zero_crossing_types.h"
rtwtypes.h
, который обеспечивает zero_crossing_types.h
.
crossReleaseImport
| sharedCodeUpdate