Пользуйтесь динамической библиотекой в проекте Microsoft Visual Studio

Этот пример показывает, как создать и сконфигурировать простой проект Microsoft® Visual Studio®, который вызывает динамическую библиотеку (DLL), сгенерированный MATLAB® Coder™. Пример использует Microsoft Visual Studio 2017. В других версиях Microsoft Visual Studio вы можете столкнуться с различной процедурой.

Сгенерируйте динамическую библиотеку C

  1. Создайте функцию MATLAB foo.

    function c = foo(a) 
    %#codegen
      c = sqrt(a);
    end
    
  2. Сохраните его как foo.m в локальной перезаписываемой папке, например, C:\dll_test.

  3. Используйте ту же версию того же компилятора, чтобы сгенерировать ваш DLL, который вы используете, чтобы разработать ваш проект Microsoft Visual Studio. В противном случае можно столкнуться с соединением ошибок.

    В данном примере используйте компилятор Microsoft Visual Studio 2017. Чтобы выбрать компилятор, который использует генератор кода, введите mex -setup в командной строке. Для получения дополнительной информации см. Поддерживаемые и Совместимые Компиляторы.

  4. Сгенерируйте DLL для функции MATLAB foo. Опция -args указывает, что вход a является действительным дважды.

    codegen -config:dll foo -args {0} -report

    В системах Microsoft Windows® codegen генерирует динамическую библиотеку C, foo.dll и вспомогательные файлы в папке по умолчанию, C:\dll_test\codegen\dll\foo.

Создайте проект Microsoft Visual Studio

В Microsoft Visual Studio создайте Пустой Проект:

  1. Выберите File> New> Project.

  2. Выберите Installed> Visual C++> General и выберите Empty project. Введите название проекта.

  3. Нажмите OK.

Создайте main.c Файл, Который Пользуется Библиотекой

Запишите файл main.c, который использует foo.dll. Функция main.c должна:

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

  • Вызовите инициализировать функцию прежде, чем вызвать библиотечную функцию впервые.

  • Вызовите оконечную функцию после вызова библиотечной функции в последний раз.

Создать файл:

  1. От Solution Explorer щелкните правой кнопкой по папке Source Files и выберите Add> New Item

  2. Выберите C++ File (.cpp). В поле Name введите main.c.

  3. Нажмите Add.

  4. Введите код:

    #include "foo.h"
    #include "foo_initialize.h"
    #include "foo_terminate.h"
    #include <stdio.h>
    
    int main()
    {
       foo_initialize();
       printf("%f\n", foo(26));
       foo_terminate();
       getchar();
       return 0;
    }

Сконфигурируйте платформу

MATLAB Coder автоматически использует набор инструментальных средств, сконфигурированный, чтобы создать 64-битный DLL. По умолчанию Microsoft Visual Studio сконфигурирован, чтобы создать для платформы Win32. Необходимо изменить платформу сборки на x64, чтобы совпадать со сгенерированным 64-битным DLL. В Microsoft Visual Studio:

  1. Выберите Build> Configuration Manager.

  2. Установите Active solution platform на x64.

Если вы хотите создать 32-битный DLL на 64-битной платформе, необходимо использовать 32-битное определение набора инструментальных средств. Смотрите Сборку 32-битный DLL на 64-битной Платформе Windows® Используя Набор инструментальных средств MSVC.

Задайте внешние зависимости

Чтобы разработать ваш проект, компилятор требует связанных заголовочных файлов. Компоновщик требует сгенерированных файлов .lib.

  1. Подсветите свой проект в Solution Explorer, и затем выберите Project> Properties.

  2. Генератор кода производит типы в файле rtwtypes.h, который включает файл tmwtypes.h. Этот файл хранится в matlabroot\extern\include, где matlabroot является корневым каталогом установки MATLAB. Чтобы возвратить корневой каталог, введите matlabroot в Командном окне.

    Под Configuration Properties> C/C++> General, добавьте папки C:\dll_test\codegen\dll\foo и matlabroot\extern\include в Additional Include Directories. Разделите записи точкой с запятой.

  3. Под Configuration Properties> Linker> Input, добавьте foo.lib в Additional Dependencies.

  4. Под Configuration Properties> Linker> General, добавьте папку C:\dll_test\codegen\dll\foo в Additional Library Directories.

Создание и запуск исполняемого файла

  1. Создайте исполняемый файл. Выберите Build> Build Solution.

  2. Сделайте DLL доступным для исполняемого файла. Или скопируйте foo.dll в папку, содержащую исполняемый файл, или добавьте папку, содержащую foo.dll к вашему пути.

  3. Запустите исполняемый файл. Проверьте, что вывод появляется, как вы ожидаете.

Похожие темы