Matlab Coder - 从.m文件生成EXE

时间:2013-10-10 13:03:42

标签: c# c++ matlab matlab-compiler matlab-coder

我的主要目标是将用matlab(.m)编写的代码与另一个c#应用程序集成。 我考虑了两个选项:

  1. 使用Matlab Builder NE
    • 优点:使用!
    • 缺点:需要到目前为止我没有的许可证($$)。需要在最终用户PC上安装MCR。
  2. 从.m文件生成独立的EXE文件
    • 优点:不需要任何东西跑。
    • 缺点:难以使用新手。不支持所有功能。
  3. 到目前为止,我正试图制作一个概念证明"选项2),但没有成功。 我甚至不知道如何开始我的问题;一旦我更多地了解工具箱,我会改进我的问题。如果问题不符合标准,请通知我。

    1. Matlab Coder,Real-Time Workshop(RTW)和RTW Embedded Coder之间有什么关系?我确信我有两个RTW许可证,但我不确定我是否有" Matlab Coder"
    2. 我正在尝试使用" emlc"命令生成EXE。这是正确的命令吗?我无法让它运转起来。我正确地生成了C / C ++代码,但是没有生成EXE(我已经配置了MEX设置)
    3. 由" emlc"生成的C / C ++代码可以在Visual Studio中导入以编译和构建EXE吗?这很容易吗?
    4. " EMLC"属于哪个工具箱?
    5. %#codegen指令代表什么?
    6. 想象一下,我在.m文件中有2个函数(functionA,functionB)。想象一下,我能够生成EXE。什么是exe的入口点?它是functionA还是functionB?如何定义数据类型?

2 个答案:

答案 0 :(得分:3)

MATLAB Coder是一个相对较新的产品,它允许您从MATLAB生成C代码,而无需使用Simulink。在此之前,您需要Simulink和Real-Time Workshop(即使您没有使用Simulink)使用emlc从MATLAB生成C代码。当MATLAB Coder发布时,Real-Time Workshop被重命名为Simulink Coder,Real-Time Workshop嵌入式编码器更名为Embedded Coder。 MATLAB / Simulink Coder和Embedded Coder之间的区别在于“基本”编码器产品允许生成功能正确的代码,但该代码未针对实时性能进行优化或可定制以满足某些编码标准。 Embedded Coder允许您优化和自定义MATLAB和Simulink Coder生成的代码。如果您拥有RTW许可证,那么您将获得MATLAB Coder的免费许可证,因为MATLAB Coder是Simulink Coder的先决条件。

我相信emlc属于MATLAB Coder。 MATLAB Coder生成的代码可以在Visual Studio中导入和编译。我不知道它实际上有多容易,但有一个名为“Pack N Go”的功能应该让这个过程更容易,检查出来。还有一个Visual Studio目标,但不确定这是基于MATLAB编码器还是你还需要嵌入式编码器。

答案 1 :(得分:2)

参考6):

入口点与MATLAB中的入口点相同 - 因此,m文件中定义的第一个函数。 命令行参数都将作为字符串传递给此函数。