C++代码中使用的MATLAB代码

C++ Code used in MATLAB code

本文关键字:代码 MATLAB C++      更新时间:2023-10-16

我有一个MATLAB代码,它使用C++代码。

当我尝试使用MATLAB编码器构建它时,我得到了一个错误

未定义的函数或变量"nameOfC++文件"。

在构建之前如何包含/定义它?

PS:matlab代码在没有预先定义这个C++文件的情况下工作。

编辑

它是如何被称为的

r = mlist(d, p);

我有两个文件,mlist.cpp和mlist.dll

开始工作的一些建议:

  1. 配置MATLAB编码器生成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. 如有必要,将include路径添加到配置对象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代码中所需的库、外部源代码、编译器标志和其他选项。

这意味着您的代码变得自包含,因此不需要修改配置对象,并且对codegen的调用不需要包括源文件、对象文件和库。