主要内容

生成部署代码

部署的过程中使用生成的代码运行的应用程序之外的MATLAB®环境。很多话题和注意事项相关部署过程。

主要功能

创建一个应用程序中,创建或使用一个C / c++主要功能调用C / c++入口点函数从MATLAB生成的函数。主函数指定了输入、输出等功能,不指定你的MATLAB算法。代码生成器产生的主要功能在默认情况下一个例子。使用生成的示例主要作为起点创建一个新的主要功能。这个例子主要提供了一个明显的例子如何通过输入和输出生成的代码。的更多信息和示例,请参阅:

您的C / c++代码必须调用一个初始化函数和一个终止函数生成的除了你的C / c++入口点函数。默认情况下,生成的C / c++入口点函数调用初始化函数。主函数调用终止函数生成的例子。当你创建和编辑自己的主要功能,确保被称为初始化和终止功能。有关更多信息,请参见:

生成的函数接口

要编写一个主函数,必须熟悉所生成的函数接口。

数据类型

生成的C / c++函数原型使用数据类型对应的类型在MATLAB代码使用。看到MATLAB的类型映射到生成的代码类型。使用嵌入式编码器®,您可以定制的外观和风格生成的数据类型。看到代码的外观(嵌入式编码)

参数传递的行为

C / c++入口点函数生成的MATLAB编码器™遵循以下约定:

  • 通过输入数组的引用。

  • 返回输出数组的引用。

  • 通过输入标量值。

  • 对于返回标量值的函数。

  • 返回标量引用:

    • 与多个输出功能。

    • 当你使用相同的变量作为输入和输出。

如果你使用相同的变量作为输入和输出在MATLAB代码中,生成的代码通过了标量引用。看到避免数据拷贝函数输入生成的代码

数组的定义

固定大小和适应可变数组代表不同的数据类型在生成的C / c++代码。有关更多信息,请参见使用C数组生成的函数接口

可执行应用程序

在您生成代码和编写一个主文件,使用生成的代码,那么你必须通过使用代码构建到一个可执行的MATLAB编码器或其他构建工具。您可能想要你的MATLAB平台上运行的可执行应用程序,主机平台,或在一个不同的平台,目标平台。包所需的元素生成的代码到一个出口的zip文件,您可以手动转移到目标平台,使用packNGo函数。

代码生成文件夹并不一定包含生成的代码使用的所有文件。这个文件夹还可以包含支持文件不使用生成的代码。金宝app使用packNGo打包并将生成的代码文件而不是移动,包括整个代码生成文件夹内容。

二进制部署

你可以直接通过使用生成的二进制文件codegen命令或MATLAB编码器通过选择构建应用程序类型的静态库,动态库,或可执行(自由、dll或exe)。默认情况下,生成的二进制文件是主机平台硬件和操作系统的功能。建立一个可执行文件,您必须指定或者提供一个主文件。例如,看到的生成独立的C / c++从MATLAB代码可执行文件。如果你设置GenerateExampleMain一个配置对象的属性“GenerateCodeAndCompile”,代码生成器构建一个可执行通过使用生成的主要文件示例。

如果你想将代码部署到另一个平台,那么您可以使用硬件支持包提供支持生成和构建平台的二进制代码。金宝app这种支持包金宝app括特定的工具链和代码生成配置设置目标硬件要求。为支持包提供的列表金宝appMATLAB编码器,请参阅MATLAB编码器硬件支持金宝app。许多额外的硬件支持包可用于嵌入式编码器。金宝app看到嵌入式硬件编码器支持金宝app(嵌入式编码)。如果你想指定一个自定义工具链的构建从硬件支持包不可用,您可以注册自己的工具链。金宝app看到自定义工具链登记

MATLAB编码器在应用程序,选择一个硬件支持包金宝app生成代码一步的硬件板下拉列表。从命令行中,指定一个硬件支持包使用金宝appcoder.hardware函数。

源代码部署

在某些情况下,您可以选择生成源代码,然后手动构建您的项目的源代码。手动构建源代码时:

  • 生成的源代码很容易构建。例如,生成的代码不需要对附加的库链接。

  • 你想创建一个可执行自定义硬件你没有硬件支持包。金宝app

  • 你知识渊博的建筑C / c++源代码或目标平台的构建系统已经配置。

代码生成器生成buildInfo对象允许您查看和修改构建信息MATLAB编码器用来创建二进制输出。您可以使用此信息对于理解如何手动构建生成的代码。看到构建流程定制RTW.BuildInfo(嵌入式编码)

代码生成器生成makefile显示构建编译和链接标志等信息。在代码生成的文件夹中找到这个makefile。生成makefile是特定于您所指定的目标平台,通过选择一个硬件包或主机平台的支持,如果没有指定硬件支持包。金宝app如果你手动构建源代码,您可以使用这个makefile来识别和排除构建需求,如编译和链接的旗帜。

如何手动配置代码生成和构建目标平台,看到的外部硬件部署生成C代码:覆盆子π的例子

静态和动态库

当你想使用生成的代码功能在现有C / c++项目,您可以生成一个静态库和动态库。库可以提供一个更模块化接口比生成的源代码。当MATLAB编码器生成一个静态库和动态库:

  • 图书馆适合你工作的平台,除非你指定一个替代平台通过硬件支持包。金宝app

  • 为C代码显式地声明生成的头文件导出的功能外来的“C”为了简化集成图书馆到c++应用程序。

  • 生成的库文件扩展名对应MATLAB主机平台的操作系统。

    操作系统 静态库 动态库
    窗户® . lib . dll. lib为相应的导入库
    macOS 。a . dylib
    Linux® 。a 所以

你必须对库编译和链接,当你构建一个可执行的。当一个可执行文件,它使用一个动态库,这个库必须在可执行文件系统路径或文件夹。使用生成的库的例子,请参阅:

生成动态库加载到MATLAB使用loadlibrary不推荐功能,可以导致不正确的行为或崩溃。

生成的文件结构

默认情况下,MATLAB编码器为每个MATLAB代码文件生成一个C代码文件。你可以选择生成的代码分割成单个文件和生成代码定制输出文件夹和二进制的名字。看到MATLAB编码器分区生成的代码如何

嵌入式程序员,您可以自定义生成的文件名。看到自定义C / c++文件的名称从MATLAB代码生成(嵌入式编码)

代码验证

之前部署生成的代码执行在MATLAB环境中,您可以验证它在MATLAB环境中。验证的主要工作流程MATLAB编码器的生成和执行是C / c++墨西哥人的功能。墨西哥人的功能在MATLAB环境中运行并提供运行时错误检查和诊断。看到代码验证

嵌入式编码器为代码提供了深刻的附加功能验证和测试。您可以使用software-in-the-loop (SIL)和processor-in-the-loop(公益诉讼)执行测试生成的代码的行为在MATLAB环境之外的软件和硬件。看到验证(嵌入式编码)

自定义硬件方面的考虑

如果你的目标仅支持金宝app数据类型和不数据类型,您可以生成代码通过使用单精度codegen-singleC选择。这个选项需要定点设计师™。如果你的目标仅支持整数数据类型金宝app,使用-float2fixed选择。看到codegen

其他部署策略

MATLAB编码器生成可读和可移植的C / c++代码的MATLAB语言的一个子集。如果你想生成一个独立的可执行应用程序的主机平台,使用MATLAB运行库,但没有一个MATLAB运行许可证,然后使用MATLAB编译器SDK™。的产品比较,看看//www.tatmou.com/matlabcentral/answers/223937-should-i-use-matlab-compiler-sdk-or-matlab-coder-to-integrate-my-matlab-applications-with-c-c

另请参阅

|

相关的话题

外部网站