Чтобы использовать один или несколько, MATLAB® Compiler SDK™ сгенерировал совместно использованные библиотеки C в вашем приложении C:
Включайте сгенерированный заголовочный файл для каждой библиотеки в вашем приложении.
Каждая сгенерированная разделяемая библиотека имеет связанный заголовочный файл под названием
.libname
H
Инициализируйте слой прокси MATLAB Runtime путем вызова mclmcrInitialize
.
Используйте mclRunMain
вызывать функцию C в вашем коде драйвера, который использует MATLAB, сгенерировало совместно использованные библиотеки.
mclRunMain()
обеспечивает удобный кросс-платформенный механизм для переноса подписания кода MATLAB в разделяемой библиотеке.
Не используйте mclRunMain()
на Mac, если ваше приложение поднимает свою собственную полную графическую среду.
Объявите входные параметры процесса и переменные.
Инициализируйте MATLAB Runtime путем вызова mclInitializeApplication
функция. Эта функция настраивает глобальное состояние MATLAB Runtime и включает конструкцию экземпляров MATLAB Runtime.
Вызовите mclInitializeApplication()
функционируйте однажды на приложение. Это должно быть названо перед любыми другими функциями MATLAB API. Можно передать опции уровня приложения этой функции. mclInitializeApplication()
возвращает булев код статуса.
Постарайтесь не выпускать cd
команды из приложения драйвера прежде, чем вызвать mclInitializeApplication
. Отказ сделать так может вызвать отказ в инициализации MATLAB Runtime.
Поскольку каждый C совместно использовал библиотеку, которую вы включаете в свое приложение, вызываете функцию инициализации для библиотеки.
Функция инициализации выполняет локальную для библиотеки инициализацию. Это распаковывает развертываемый архив и запускает экземпляр MATLAB Runtime с необходимой информации, чтобы выполнить код в том архиве. Функцию инициализации библиотеки называют
. Эта функция возвращает булев код статуса.libname
Инициализируйте ()
На Windows®, если вы хотите сделать, чтобы ваша разделяемая библиотека вызвала MATLAB, совместно использовал библиотеку, функция инициализации библиотеки MATLAB (например, <libname>Initialize, <libname>Terminate, mclInitialize, mclTerminate
) не может быть назван от вашей разделяемой библиотеки во время DllMain(DLL_ATTACH_PROCESS)
вызвать. Это применяется, или ли совместно использованная библиотека промежуточного звена неявно явным образом загружена. Поместите вызов после DllMain()
.
Вызовите функции в библиотеке и обработайте результаты. (Это - основная часть программы.)
Если ваши окна фигуры MATLAB отображений приложения драйвера, включайте вызов mclWaitForFiguresToDie
прежде, чем вызвать Terminate
функции и mclTerminateApplication
в выполняющем двух шагов.
Когда для вашего приложения больше не будет нужна данная библиотека, вызовите функцию завершения для библиотеки.
Оконечная функция освобождает ресурсы, сопоставленные с экземпляром MATLAB Runtime библиотеки. Функцию завершения библиотеки называют
. Если библиотека была отключена, функции, экспортируемые библиотекой, не могут быть вызваны снова в приложении.libname
Оконечный ()
Издание <lib>Initialize
вызовите после <lib>Terminate
вызовите (является ли библиотека тем же самым), вызывает непредсказуемые результаты.
Когда ваше приложение больше не должно будет вызывать разделяемые библиотеки, вызовите mclTerminateApplication
API-функция.
Эта функция освобождает ресурсы уровня приложения, используемые MATLAB Runtime. Если вы вызываете эту функцию, никакие дальнейшие вызовы не могут быть выполнены к разделяемым библиотекам в приложении.
Очистите переменные, близкие файлы и выход.
Следующий пример от matrix.c
иллюстрирует все перечисленные выше шаги.
Вызовите C разделяемая библиотека из вашего приложения драйвера C
loadlibrary
Вы не можете использовать функцию MATLAB loadlibrary
в MATLAB, чтобы загрузить C совместно использовал библиотеку, созданную с MATLAB Compiler SDK.
Для получения дополнительной информации об использовании loadlibrary
, смотрите Вызов Разделяемые Библиотеки в Развертываемых приложениях (MATLAB Compiler).
mclInitializeApplication
| mclRunMain
| mclTerminateApplication
| mclWaitForFiguresToDie
| mclmcrInitialize