exponenta event banner

Вызов общей библиотеки C

Чтобы использовать одну или несколько общих библиотек C SDK™ созданных компилятором MATLAB ® в приложении C, выполните следующие действия.

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

    Каждая созданная общая библиотека имеет связанный файл заголовка с именем libname.h.

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

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

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

    Внимание

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

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

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

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

    Внимание

    Избегать выдачи cd команды из приложения драйвера перед вызовом mclInitializeApplication. Это может привести к сбою при инициализации среды выполнения MATLAB.

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

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

    Примечание

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

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

    Примечание

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

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

    Функция завершения освобождает ресурсы, связанные с экземпляром среды выполнения MATLAB библиотеки. Имя функции завершения библиотеки libnameTerminate(). После завершения работы библиотеки функции, экспортированные библиотекой, не могут быть снова вызваны в приложении.

    Внимание

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

  9. Если приложению больше не требуется вызывать общие библиотеки, вызовите mclTerminateApplication Функция API.

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

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

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

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

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

Нельзя использовать функцию MATLAB loadlibrary в MATLAB для загрузки общей библиотеки C, построенной с помощью MATLAB Compiler SDK.

Дополнительные сведения об использовании loadlibrary, см. раздел Вызов общих библиотек в развернутых приложениях.

См. также

| | | |

Связанные темы