MATLAB 代码中使用的 C++ 代码
C++ Code used in MATLAB code
我有一个 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 ...
包括所需的 header(s)。在用于代码生成的 MATLAB 代码中使用:
function y = example(x)
%#codegen
coder.cinclude('a_header.h');
coder.cinclude('<a_system_header>');
如有必要,将包含路径添加到配置 object、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
)、object 文件(.o, .obj
)或库(.a, .so, .lib, .dylib
等)传递给代码生成命令:
codegen -config cfg matlab_function_name source.cpp library.so ...
external code integration 上的文档显示了封装对外部代码的依赖项的其他技术。使用这些允许您从传递给 MATLAB Coder 的 MATLAB 代码中指定必要的库、外部源代码、编译器标志和其他选项。
这意味着您的代码变为 self-contained,因此不需要修改配置 object 并且对 codegen
的调用不需要包含源文件,object文件和库。
我有一个 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 ...
包括所需的 header(s)。在用于代码生成的 MATLAB 代码中使用:
function y = example(x) %#codegen coder.cinclude('a_header.h'); coder.cinclude('<a_system_header>');
如有必要,将包含路径添加到配置 object、
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
)、object 文件(.o, .obj
)或库(.a, .so, .lib, .dylib
等)传递给代码生成命令:codegen -config cfg matlab_function_name source.cpp library.so ...
external code integration 上的文档显示了封装对外部代码的依赖项的其他技术。使用这些允许您从传递给 MATLAB Coder 的 MATLAB 代码中指定必要的库、外部源代码、编译器标志和其他选项。
这意味着您的代码变为 self-contained,因此不需要修改配置 object 并且对 codegen
的调用不需要包含源文件,object文件和库。