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

开始工作的一些建议:

  1. 配置 MATLAB Coder 以生成 C++ 代码以确保一致的编译和链接:

    cfg = coder.config('lib');
    cfg.TargetLang = 'C++';
    codegen -config cfg ...
    
  2. 包括所需的 header(s)。在用于代码生成的 MATLAB 代码中使用:

    function y = example(x)
    %#codegen
    coder.cinclude('a_header.h');
    coder.cinclude('<a_system_header>');
    
  3. 如有必要,将包含路径添加到配置 object、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)、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文件和库。