主要内容

生成独立的C/ c++可执行程序MATLAB代码

生成C可执行文件MATLAB编码器应用程序

这个例子展示了如何从MATLAB中生成一个C可执行文件®代码使用MATLAB编码器™在本例中,您为一个生成随机标量值的MATLAB函数生成一个可执行文件。使用该应用程序,您:

  1. 生成一个示例C主要调用生成的库函数的函数。

  2. 复制并修改生成的c而且main.h

  3. 修改项目设置,以便应用程序可以找到修改的c而且main.h

  4. 生成可执行文件。

创建入口点函数

在本地可写文件夹中,创建一个MATLAB函数,coderand,它由开区间(0,1)上的标准均匀分布生成一个随机标量值:

函数r = coderand ()% # codegenr = rand ();

创建测试文件

在同一个本地可写文件夹中,创建一个MATLAB文件,coderand_test.m,电话coderand

函数Y = coderand_test() Y = codeand ();

打开MATLAB编码器应用程序

在MATLAB工具条上应用程序选项卡,在代码生成,单击MATLAB编码器应用程序图标。

应用程序打开选择源文件页面。

指定源文件

  1. 选择源文件页中,键入或选择入口点函数的名称coderand

    应用程序用默认名称创建一个项目coderand.prj在当前文件夹中。

  2. 点击下一个定义输入类型的一步。该应用程序分析了编码问题和代码生成准备的功能。如果应用程序发现了问题,它会打开检查代码生成准备情况页,您可以在其中检查和修复问题。在本例中,因为应用程序没有检测到问题,所以它打开定义输入类型页面。

定义输入类型

因为C使用静态类型,所以在编译时,MATLAB编码器必须确定MATLAB文件中所有变量的属性。必须指定所有入口点函数输入的属性。从入口点函数输入的性质来看,MATLAB编码器可以推断出MATLAB文件中所有变量的性质。

在本例中,函数coderand没有输入。

点击下一个检查运行时问题的一步。

检查运行时问题

检查运行时问题step从入口点函数生成MEX文件,运行MEX函数并报告问题。此步骤是可选的。但是,执行此步骤是最佳实践。您可以在生成的C代码中检测和修复难以诊断的运行时错误。

  1. 打开检查运行时问题对话框中,单击检查问题箭头

    选择或输入测试文件coderand_test

  2. 点击检查问题

    该应用程序生成一个MEX函数coderand.它运行替换调用的测试文件coderand调用MEX函数。如果应用程序在MEX函数生成或执行期间检测到问题,它将提供警告和错误消息。单击这些消息可导航到有问题的代码并修复问题。在本例中,应用程序不会检测到问题。

  3. 点击下一个生成代码的一步。

生成一个C主要函数

生成可执行文件时,必须提供一个C/ c++主函数。默认情况下,当生成C/ c++源代码、静态库、动态链接库或可执行文件时,MATLAB编码器生成一个主要函数。这个生成的主函数是一个模板,您可以为应用程序修改它。看到使用主函数示例合并生成的代码.在复制和修改生成的主函数之后,可以使用它生成C/ c++可执行文件。或者,您也可以编写自己的main函数。

在生成可执行文件之前coderand,生成一个主要函数调用coderand

  1. 打开生成对话框中,单击生成箭头

  2. 生成对话框中,设置构建类型源代码而且语言使用其他项目生成配置设置的默认值。

  3. 点击更多的设置

  4. 所有设置选项卡,在先进的,确认生成的例子主要被设置为生成一个示例main函数,但不编译.点击关闭

  5. 点击生成

    MATLAB编码器生成一个c文件和一个main.h文件。该应用程序表示代码生成成功。

  6. 点击下一个打开完成工作流程页面。

    完成工作流程页面,在生成的输出你们看到了吗c在子文件夹中coderand \ codegen \ lib \ coderand \例子

复制生成的示例主文件

因为后续的代码生成可以覆盖生成的示例文件,所以在修改这些文件之前,请将它们复制到控件外部的可写文件夹中codegen文件夹中。对于本例,复制c而且main.h的子文件夹coderand \ codegen \ lib \ coderand \例子到一个可写文件夹,例如,c: \ myfile

修改生成的示例主文件

  1. 在包含示例主文件副本的文件夹中,打开c

    生成c

  2. 修改c这样它就能打印出a的结果coderand电话:

    • main_coderand,删除该行

      双r;

    • main_coderand、替换

      r = coderand ()
      printf (" coderand = % g \ n”,coderand ());

    • 对于这个示例,主要没有争吵。在主要,删除以下行:

      命令行参数个数(无效);(空白)argv;

      更改定义主要

      int main ()

    修改c

  3. 开放main.h

    生成main.h

  4. 修改main.h

    • 添加的头到包含文件:

      # include < stdio . h >

    • 将main的声明更改为

      extern int main ()

修改main.h

生成可执行文件

  1. 打开生成代码页,展开工作流步骤并点击生成

  2. 打开生成对话框中,单击生成箭头

  3. 构建类型可执行文件(. exe)

  4. 点击更多的设置

  5. 自定义代码选项卡,在额外的源文件,输入c

  6. 自定义代码选项卡,在其他包括目录,输入修改后的位置c而且main.h文件。例如,c: \ myfile.点击关闭

  7. 要生成可执行文件,请单击生成

    该应用程序表示代码生成成功。

  8. 点击下一个完成工作流程的一步。

  9. 生成的输出,您可以看到生成的可执行文件的位置coderand.exe

运行可执行文件

在Windows上运行MATLAB中的可执行程序®平台:

系统(“coderand”)

在命令行生成C可执行文件

在本例中,您将创建一个MATLAB函数,该函数生成一个随机标量值,并创建一个调用该MATLAB函数的主C函数。然后为函数输入参数指定类型,指定主函数,并为MATLAB代码生成C可执行文件。

  1. 写一个MATLAB函数,coderand,它由开区间(0,1)上的标准均匀分布生成一个随机标量值:

    函数r = coderand ()% # codegenr = rand ();
  2. 写一个主C函数,c: \ myfile \ c,电话coderand.例如:

    /* ** main.c */ #include  #include  #include "coderand.h" #include "coderand_terminate.h" int main(){/*从生成的入口点函数自动调用initialize函数。因此,这里不包括初始化调用。* / printf (" coderand = % g \ n”,coderand ());coderand_terminate ();返回0;}

    请注意

    在本例中,因为默认的文件分区方法是为每个MATLAB文件生成一个文件,所以您包含“coderand_terminate.h”.如果将文件分区方法设置为为所有函数生成一个文件,那么就这么做包括“coderand_terminate.h”

  3. 配置你的代码生成参数,包括主C函数,然后生成C可执行文件:

    cfg = coder.config (exe);cfg。CustomSource = ' c ';cfg。CustomInclude = c: \ myfile”;Codegen -config CFG coderand

    codegen生成一个C可执行文件,coderand.exe,在当前文件夹中。它在默认文件夹中生成支持文万博1manbetx件,codegen / exe / coderandcodegen的最小集合# include所选代码替换库所需的头文件的语句。

为C/ c++可执行程序指定主要函数

生成可执行文件时,必须提供主要函数。对于C可执行文件,提供一个C文件,c.对于c++可执行文件,提供一个c++文件,main.cpp.验证包含main函数的文件夹只有一个主文件。否则,c优先于main.cpp,这会在生成c++代码时导致错误。您可以从项目设置对话框、命令行或代码生成对话框中指定主文件。

默认情况下,当生成C/ c++源代码、静态库、动态链接库或可执行文件时,MATLAB编码器生成一个主要函数。这个生成的主函数是一个模板,您可以为应用程序修改它。看到使用主函数示例合并生成的代码.在复制和修改生成的主函数之后,可以使用它生成C/ c++可执行文件。或者,您也可以编写自己的main函数。

当您将MATLAB函数转换为C/ c++库函数或C/ c++可执行文件时,MATLAB编码器生成一个初始化函数和一个终止函数。

  • 如果你的文件分区方法被设置为为每个MATLAB文件生成一个文件,你必须在c.否则,不要将其包含在内c

  • 有关调用initialize和terminate函数的更多信息,请参见使用生成的初始化和终止函数

指定主要功能

指定主要函数使用MATLAB编码器应用程序

  1. 打开生成对话框,对生成代码页面,点击生成箭头

  2. 点击更多的设置

  3. 自定义代码选项卡,设置:

    1. 额外的源文件类的C/ c++源文件的名称主要函数。例如,c.有关更多信息,请参见为C/ c++可执行程序指定主要函数

    2. 其他包括目录c.例如,c: \ myfile

在命令行指定主要功能

设置CustomSource而且CustomInclude代码生成配置对象的属性(参见使用配置对象).的CustomInclude属性指定的C/ c++文件的位置CustomSource

  1. 为可执行文件创建一个配置对象:

    cfg = coder.config (exe);
  2. 设置CustomSource属性的C/ c++源文件的名称主要函数。(有关更多信息,请参见为C/ c++可执行程序指定主要函数)。例如:

    cfg。CustomSource = ' c ';

  3. 设置CustomInclude属性的位置c.例如:

    cfg。CustomInclude = c: \ myfile”;

  4. 使用命令行选项生成C/ c++可执行文件。例如,如果myFunction接受一个类型的输入参数

    codegen -config cfg myMFunction -args {0}

    MATLAB编码器编译主函数并将其与生成主函数的C/ c++代码链接起来myMFunction.m