Код C ++, используемый в коде MATLAB

У меня есть код MATLAB и его использование кода C ++.

Когда я пытаюсь построить его с помощью MATLAB Coder, я получаю сообщение об ошибке

Неопределенная функция или переменная ‘nameOfC ++ file’.

Как мне включить / определить его перед сборкой?

PS: код Matlab работает без предварительного определения этого файла C ++.

РЕДАКТИРОВАТЬ

Как это называется

r = mlist(d, p);

У меня есть два файла, mlist.cpp и mlist.dll

0

Решение

Некоторые предложения для начала работы:

  1. Сконфигурируйте MATLAB Coder для генерации кода C ++ для обеспечения согласованной компиляции и компоновки:

    cfg = coder.config('lib');
    cfg.TargetLang = 'C++';
    codegen -config cfg ...
    
  2. Включите необходимые заголовки (и). В вашем коде MATLAB для генерации кода используйте:

    function y = example(x)
    %#codegen
    coder.cinclude('a_header.h');
    coder.cinclude('<a_system_header>');
    
  3. При необходимости добавьте включаемые пути к объекту конфигурации, cfg:

    cfg.CustomInclude = '/directory/with/headers /other/directory';
    
  4. Вызовите ваши внешние функции, используя coder.ceval:

    function y = example(x)
    %#codegen
    coder.cinclude('a_header.h');
    coder.cinclude('<a_system_header>');
    % Assume y is a double scalar. Change this to match the return type
    % of someExternalFunction
    y = 0;
    y = coder.ceval('someExternalFunction',x);
    
  5. Передайте все необходимые исходные файлы C ++ (.cpp), объектные файлы (.o, .obj) или библиотеки (.a, .so, .lib, .dylib и т.д.) команде codegen:

    codegen -config cfg matlab_function_name source.cpp library.so ...
    

Документация по интеграция с внешним кодом показывает другие методы для инкапсуляции зависимостей от внешнего кода. Используя их, вы можете указать необходимые библиотеки, внешний исходный код, флаги компилятора и другие опции из вашего кода MATLAB, передаваемого в MATLAB Coder.

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

0

Другие решения


По вопросам рекламы [email protected]