Вызовите C разделяемая библиотека

Чтобы использовать один или несколько, MATLAB® Compiler SDK™ сгенерировал совместно использованные библиотеки C в вашем приложении C:

  1. Включайте сгенерированный заголовочный файл для каждой библиотеки в вашем приложении.

    Каждая сгенерированная разделяемая библиотека имеет связанный заголовочный файл под названием libnameH.

  2. Инициализируйте слой прокси MATLAB Runtime путем вызова mclmcrInitialize.

  3. Использование mclRunMain вызывать функцию C в вашем коде драйвера, который использует MATLAB, сгенерировало совместно использованные библиотеки.

    mclRunMain() обеспечивает удобный кросс-платформенный механизм для переноса подписания кода MATLAB в разделяемой библиотеке.

    Внимание

    Не используйте mclRunMain() на Mac, если ваше приложение поднимает свою собственную полную графическую среду.

  4. Объявите входные параметры процесса и переменные.

  5. Инициализируйте MATLAB Runtime путем вызова mclInitializeApplication функция. Эта функция настраивает глобальное состояние MATLAB Runtime и включает конструкцию экземпляров MATLAB Runtime.

    Вызовите mclInitializeApplication() функционируйте однажды на приложение. Это должно быть названо перед любыми другими функциями MATLAB API. Можно передать опции уровня приложения этой функции. mclInitializeApplication() возвращает булев код статуса.

    Внимание

    Постарайтесь не выпускать cd команды из приложения драйвера прежде, чем вызвать mclInitializeApplication. Отказ сделать так может вызвать отказ в инициализации MATLAB Runtime.

  6. Поскольку каждый C совместно использовал библиотеку, которую вы включаете в свое приложение, вызываете функцию инициализации для библиотеки.

    Функция инициализации выполняет локальную для библиотеки инициализацию. Это распаковывает развертываемый архив и начинает экземпляр MATLAB Runtime с необходимой информации, чтобы выполнить код в том архиве. Функцию инициализации библиотеки называют libnameИнициализируйте (). Эта функция возвращает булев код статуса.

    Примечание

    На Windows®, если вы хотите сделать, чтобы ваша разделяемая библиотека вызвала MATLAB, совместно использовал библиотеку, функция инициализации библиотеки MATLAB (например, <libname>Initialize, <libname>Terminate, mclInitialize, mclTerminate) не может быть назван от вашей разделяемой библиотеки во время DllMain(DLL_ATTACH_PROCESS) вызвать. Это применяется, или ли совместно использованная библиотека промежуточного звена неявно явным образом загружена. Поместите вызов после DllMain().

  7. Вызовите функции в библиотеке и обработайте результаты. (Это - основная часть программы.)

    Примечание

    Если ваши графические окна MATLAB отображений приложения драйвера, включайте вызов mclWaitForFiguresToDie прежде, чем вызвать Terminate функции и mclTerminateApplication в выполняющем двух шагов.

  8. Когда для вашего приложения больше не будет нужна данная библиотека, вызовите функцию завершения для библиотеки.

    Оконечная функция освобождает ресурсы, сопоставленные с экземпляром MATLAB Runtime библиотеки. Функцию завершения библиотеки называют libnameОконечный (). Если библиотека была отключена, функции, экспортируемые библиотекой, не могут быть вызваны снова в приложении.

    Внимание

    Издание <lib>Initialize вызовите после <lib>Terminate вызовите (является ли библиотека тем же самым), вызывает непредсказуемые результаты.

  9. Когда ваше приложение больше не должно будет вызывать разделяемые библиотеки, вызовите mclTerminateApplication API-функция.

    Эта функция освобождает ресурсы уровня приложения, используемые MATLAB Runtime. Если вы вызываете эту функцию, никакие дальнейшие вызовы не могут быть выполнены к разделяемым библиотекам в приложении.

  10. Очистите переменные, близкие файлы и выход.

Следующий пример от matrix.c иллюстрирует все перечисленные выше шаги.

 Вызовите C разделяемая библиотека из вашего приложения драйвера C

Ограничения при использовании функции MATLAB loadlibrary

Вы не можете использовать функцию MATLAB loadlibrary в MATLAB, чтобы загрузить C совместно использовал библиотеку, созданную с MATLAB Compiler SDK.

Для получения дополнительной информации об использовании loadlibrary, смотрите Вызов Разделяемые Библиотеки в Развертываемых приложениях.

Смотрите также

| | | |

Похожие темы