MATLAB Coder hello world开始完成

时间:2016-05-04 13:04:09

标签: c++ matlab compilation makefile matlab-coder

修改

经过这么多努力只产生错误的.exe文件后,我们决定不花更多的时间来尝试生成代码,而是自己编写代码。谢谢大家的时间。

_ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ / _ /

TL; DR问题

我已经用MATLAB Coder从MATLAB导出了C ++代码,我该如何编译呢?

完整问题

使用Matlab App" MATLAB Coder"您可以将MATLAB代码编译为C ++代码。我知道一些步骤,但不是所有步骤,经过一些广泛的谷歌搜索,我只找到了一些答案,但没有成功。让我们一起努力拼凑信息。我打算将这个问题作为指导。

这是我们想要的C ++代码的MATLAB程序:

disp('Hello World')

0。重写:

首先,MATLAB Coder需要一个函数和一个运行该函数的.m文件。代码被重写为一个名为 HelloWorld.m

的文件
function [] = Helloworld()
    disp('Hello World')
end

另一个名为 ScriptHelloWorld.m 的文件,其中包含:

HelloWorld();

1。运行MATLAB编码器

一旦找到它,程序就非常简单。它位于" Apps"然后你可以选择启动MATLAB编码器。这包含在MATLAB 2015及更高版本中。启动后,选择要运行的文件,然后选择运行它的文件。没问题,因为它们都是非常简单的文件。我们决定将该项目命名为“HejWorld"。

2。获取文件

这是信息不再那么清晰的地方。所有文件都将放在您选择的文件夹中,据说它们都很重要。这就是文件结构的样子:

Compiled data file structure

lib的内部看起来像这样:

Inside of lib folder

而mex的内部看起来像这样:

Inside of mex file

第3。编译

这是我无能为力的地方。它应该只是编译文件,但它并不是一个简单的任务。我在codegen / lib / HelloWorld / HelloWorld_rtw.mk中找到where the makefile is,但可能有更多的makefile,因为我不确定要构建什么。

此外,在根目录HelloWorld.prj中有一个.prj文件,如第一个屏幕截图所示。我找不到用gcc或任何其他应用程序运行它的方法。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您需要lib / Helloworld下的所有文件。如果从shell调用该目录中的makefile Helloworld_rtw.mk,它应该在unix平台上创建一个库Helloworld.so,在windows上创建一个Helloworld.lib。

gmake -f Helloworld_rtw.mk build

您可以将代码链接到此库以调用该库中的主函数Helloworld。调用Helloworld的示例main.c放在examples目录下。在将Helloworld库添加为链接器选项并包含标头路径之后,您应该能够将此示例编译为可执行文件。

要查看它的工作而不是在代码中调用disp,您可能需要执行一些简单的算法,如下所示。这是因为disp不会为lib target生成任何代码。

function [y] = Helloworld(u)
    y = 2*u;
end

在ScriptHellowWorld.m

Helloworld(2);

在调用Helloworld函数后,您可以在main函数的副本中手动添加printf语句。

答案 1 :(得分:1)

如果您计划为运行MATLAB的同一台机器或具有兼容架构的机器编译代码,您可以让MATLAB Coder为您编译。假设你想要一个静态库。然后从Build Type下拉列表中选择该内容,并确保取消选中Generate Code Only。请参阅screenshot的文档。

代码生成完成后,MATLAB Coder将编译代码以在codegen/lib/Helloworld中生成静态库。