2013-09-05 3 views
3

У меня есть приложение C, которое использует две библиотеки static. Исходный код для этих библиотек создается и создается Simulink/MATLAB.
Проблема заключается в том, что Simulink генерирует EXTERN нестатический функцию
real_T rt_urand_Upu32_Yd_f_pw(uint32_T *u) для блока «Единый Random Number» в файле MyModel.c для каждой модели. И когда я включаю эти библиотеки в свое приложение C, я получил ошибку компоновщика переопределения функции.Использование двух статических библиотек Simulink/MATLAB

Есть ли способ изменить процесс генерации кода в Simulink?

+0

Что вы используете для генерации кода? Simulink Coder? Встроенный кодер? Какая цель? – pmb

+0

Используете ли вы модельную ссылку? – pmb

+0

Я использую Simulink Coder с собственной целью, основанной на grt.tlc (Generic Real Time Target) – Yuriy

ответ

2

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

Вот некоторые предложения с верхней частью моей головы, если это нормально для вас есть только одна библиотека вместо 2.

Предложения: Помещенных обе модели в качестве образцовых ссылок в одной топовой модели. Создать код. Simulink Coder понимает, что блок используется в обеих моделях и генерирует функцию только один раз.

Предложение2: Оберните единый блок случайных чисел в подсистеме с функциональной упаковкой в ​​отдельный файл C. Скомпилируйте сгенерированные исходные файлы обеих моделей вместе, удалив одну из копий файла C, которую вы создали отдельно.

parameters for function packaging

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