У меня есть код MATLAB и его использование кода C ++.
Когда я пытаюсь построить его с помощью MATLAB Coder, я получаю сообщение об ошибке
Неопределенная функция или переменная ‘nameOfC ++ file’.
Как мне включить / определить его перед сборкой?
PS: код Matlab работает без предварительного определения этого файла C ++.
РЕДАКТИРОВАТЬ
Как это называется
r = mlist(d, p);
У меня есть два файла, mlist.cpp и mlist.dll
Некоторые предложения для начала работы:
Сконфигурируйте MATLAB Coder для генерации кода C ++ для обеспечения согласованной компиляции и компоновки:
cfg = coder.config('lib');
cfg.TargetLang = 'C++';
codegen -config cfg ...
Включите необходимые заголовки (и). В вашем коде MATLAB для генерации кода используйте:
function y = example(x)
%#codegen
coder.cinclude('a_header.h');
coder.cinclude('<a_system_header>');
При необходимости добавьте включаемые пути к объекту конфигурации, cfg
:
cfg.CustomInclude = '/directory/with/headers /other/directory';
Вызовите ваши внешние функции, используя 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);
Передайте все необходимые исходные файлы C ++ (.cpp
), объектные файлы (.o, .obj
) или библиотеки (.a, .so, .lib, .dylib
и т.д.) команде codegen:
codegen -config cfg matlab_function_name source.cpp library.so ...
Документация по интеграция с внешним кодом показывает другие методы для инкапсуляции зависимостей от внешнего кода. Используя их, вы можете указать необходимые библиотеки, внешний исходный код, флаги компилятора и другие опции из вашего кода MATLAB, передаваемого в MATLAB Coder.
Это означает, что ваш код становится автономным, поэтому нет необходимости изменять объект конфигурации и вызывать codegen
не нужно включать исходные файлы, объектные файлы и библиотеки.