我有一个MATLAB代码,它使用的是C ++代码。
当我尝试使用MATLAB Coder构建它时,我收到错误
未定义的函数或变量' nameOfC ++文件'。
如何在构建之前包含/定义它?
PS:matlab代码无法预先定义此C ++文件。
编辑
如何调用
r = mlist(d, p);
我有两个文件,mlist.cpp和mlist.dll
答案 0 :(得分:0)
一些建议开始:
配置MATLAB编码器以生成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 ...
external code integration上的文档显示了封装外部代码依赖关系的其他技术。使用这些允许您指定必要的库,外部源代码,编译器标志以及传递给MATLAB Coder的MATLAB代码中的其他选项。
这意味着您的代码变得自包含,因此无需修改配置对象,并且对codegen
的调用不需要包含源文件,目标文件和库。