部署生成的 C/C++ 代码
一旦验证了生成的代码能够满足您的需求,您就可以部署它。您可以将生成的代码部署为源代码、静态库、动态库或可执行的应用程序。
要打包在外部平台上编译应用程序所需的所有源文件,请使用 packNGo
函数。
要使用代码生成器编译可执行的应用程序,您必须:
生成所需的源代码或库(在前面的步骤中已完成)。
创建一个调用生成代码的主函数。
在编译类型设置为“
可执行文件(.exe)
” 的情况下迭代进行代码生成。
编辑生成的主函数和接口
要创建应用程序,请创建或使用 C/C++ 主函数来调用从 MATLAB® 函数生成的 C/C++ 入口函数。例如,请参阅从 MATLAB 代码生成独立的 C/C++ 可执行文件。
注意
不要修改 examples
子文件夹中的 main.c
和 main.h
文件。在使用示例主函数之前,将示例主函数源文件和头文件复制到编译文件夹以外的某个位置。修改新位置的文件以满足您的应用程序的要求。
使用生成的示例主函数作为创建主函数的起点。示例主函数清晰地展示了如何向生成的代码传递输入和从生成的代码传递输出。有关详细信息和示例,请参阅使用示例主函数合并生成的代码和生成的示例 C/C++ 主函数的结构。
生成的函数接口
要编写主函数,您必须熟悉生成的函数接口。请参阅Mapping MATLAB Types to Types in Generated Code。
C/C++ 入口函数遵循以下约定:
按引用传递输入数组。
按引用返回输出数组。
按值传递输入标量。
对单输出函数按值返回标量。
按引用返回标量:
适用于具有多个输出的函数。
适用于使用相同的变量作为输入和输出的情况。
如果在 MATLAB 代码中使用相同的变量作为输入和输出,生成的代码将按引用传递标量。请参阅Avoid Data Copies of Function Inputs in Generated Code。
数组定义
代码生成器创建依赖数组元素类型及其内存分配类型的 C/C++ 数组定义。请参阅Representation of Arrays in Generated Code。
要了解与生成代码中的数组相关联的方法的更多信息,请参阅:
初始化函数和终止函数
除了 C/C++ 入口函数之外,C/C++ 代码还必须调用生成的初始化函数和终止函数。默认情况下,生成的 C/C++ 入口函数调用初始化函数。生成的示例主函数调用终止函数。当您创建和编辑自己的主函数时,请确保同时调用初始化函数和终止函数。
使用 MATLAB Coder 编译可执行应用程序
创建主文件 (main.c
) 和主函数头文件 (main.h
) 后,请按照以下步骤使用该 App 编译可执行应用程序:
在 App 中打开生成代码页。
将编译类型设置为“
可执行文件(.exe)
”。点击更多设置。
在自定义代码选项卡的其他源文件中,输入
main.c
在自定义代码选项卡的其他包括目录中,输入修改后的
main.c
和main.h
文件的位置。例如,c:\myfiles
。点击关闭。要生成可执行文件,请点击生成。
App 指示代码生成成功。
点击下一步以转至完成工作流步骤。
在生成的输出下,您可以看到生成的可执行文件
filename.exe
的位置。
在生成代码并编写使用生成代码的主文件后,您可以使用代码生成器或其他编译工具生成可执行应用程序。如果您要将生成的代码以可导出的 zip 文件形式传输到目标平台,请使用 packNGo
函数。
目标特定代码生成
要将您的代码部署到另一个平台,请使用支持为该平台生成和编译二进制代码的硬件支持包。
在 MATLAB Coder™ 中,在生成代码步骤中,从硬件板下拉列表中选择一个硬件支持包。
有关为 MATLAB Coder 提供的支持包列表,请参阅 MATLAB Coder 支持的硬件。如果要为硬件支持包中不可用的编译指定自定义工具链,您可以注册自己的工具链。请参阅自定义工具链注册。
提示
在命令行中选择硬件
在命令行中,使用 coder.hardware
函数指定硬件支持包。
在 MATLAB 中运行可执行文件
要在 Windows® 平台上的 MATLAB 中运行可执行文件,请执行以下命令:
system('filename.exe')
另请参阅
相关主题
- Deploy Generated Code
- 从 MATLAB 代码生成独立的 C/C++ 可执行文件
- 使用示例主函数合并生成的代码
- 生成的示例 C/C++ 主函数的结构
- Mapping MATLAB Types to Types in Generated Code
- Avoid Data Copies of Function Inputs in Generated Code
- Representation of Arrays in Generated Code
- 在生成的函数接口中使用 C 数组
- Use Dynamically Allocated C++ Arrays in Generated Function Interfaces
- MATLAB Coder 支持的硬件
- 自定义工具链注册