- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
编辑
在经历了如此多的努力却只产生了错误的 .exe 文件之后,我们决定不再花更多的时间尝试生成代码,而是自己编写代码。谢谢大家的宝贵时间。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
TL;DR 问题
我已经使用 MATLAB Coder 从 MATLAB 导出了 C++ 代码,我该如何编译它?
完整问题
使用 Matlab 应用程序“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 Coder
程序非常简单,一旦您找到它。它在“应用程序”中,然后您可以选择启动 MATLAB Coder。这包含在 MATLAB 2015 及以后的版本中。启动后,选择要运行的文件,然后选择运行它的文件。这里没有问题,因为它们都是非常简单的文件。我们决定将该项目命名为“HejWorld”。
<强>2。获取文件
这是信息不再那么清楚的地方。所有文件都将放在您选择的文件夹中,据说它们都很重要。文件结构如下所示:
lib 的内部看起来像这样:
mex 的内部看起来像这样:
<强>3。编译
这就是我无能为力的地方。它应该只是编译文件,但事实证明这并不是一件容易的事。我找到了where the makefile is在 codegen/lib/HelloWorld/HelloWorld_rtw.mk 中,但可能会有更多的 makefile,因为我不确定要构建什么。
此外,根目录中还有一个 .prj 文件,HelloWorld.prj,如第一个屏幕截图所示。我找不到用 gcc 或任何其他应用程序运行它的方法。
感谢您的帮助!
最佳答案
你需要lib/Helloworld 下的所有文件。如果您从 shell 调用该目录中的 makefile Helloworld_rtw.mk,它应该在 unix 平台上创建一个库 Helloworld.so,在 Windows 上创建一个 Helloworld.lib。
gmake -f Helloworld_rtw.mk build
您可以将您的代码链接到该库以调用该库中的主要函数 Helloworld。调用 Helloworld 的示例 main.c 位于示例目录下。在将 Helloworld 库添加为链接器选项并包含 header 路径后,您应该能够将此示例编译为可执行文件。
要查看它是否正常工作而不是在您的代码中调用 disp,您可能需要执行一些简单的算术运算,如下所示。这是因为 disp 不会为 lib 目标生成任何代码。
function [y] = Helloworld(u)
y = 2*u;
end
在 ScriptHellowWorld.m 中
Helloworld(2);
调用 Helloworld 函数后,您可以在 main 函数的拷贝中手动添加 printf 语句。
关于c++ - MATLAB Coder hello world 从头到尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37028685/
NSCoding 需要 init(coder:),但也有此方法的可选版本 init?(coder:)。 如果返回 nil,具体应该怎么办?这甚至是一个问题吗? 假设您正在使用 init(coder:)
我正在处理一个 MATLAB Coder 项目,我想在其中加载一些常量值。在尝试了多种可能性之后,均未成功,我提出了“coder.load”指令,该指令从 MAT 文件加载变量并假定它们作为生成的 C
我正在构建 Apache Beam 管道,但在尝试导入管道选项时遇到了 AttributeError。 我正在使用 python3.6 在干净的虚拟环境中的 Ubuntu 服务器上进行测试 步骤: v
我需要使用 y=coder.ceval() 从 matlab 调用 c 函数,并从该函数返回一个字符串。但是 coder.ceval() 函数只允许我返回标量值。然而 String 是一个 char
最近我从 Xcode 6.2 更新到 Xcode 6.3 beta 4 并打开了我的项目。我在 init() 上遇到以下错误:Missing argument for parameter 'coder
我正在 simulink 中开发一个系统控制,我想在嵌入式板上运行这个模型。因此,我想将模型的输入和输出与特定函数(在模型外部手写)联系起来。 为了理解:我有一个输入,它是一个包含 8 个元素的数组。
我正在使用 Matlab 处理大型数组中的大量数据。我的程序运行良好,现在我已将其转换为 C,但遇到了最大数组大小问题。 定义emxArray时,定义如下: struct emxArray_real_
我正在尝试在一段代码中使用动态增长的结构数组,该代码应该使用 Coder 转换为 C: 我初始化该结构,然后为编码器声明其字段可变大小,然后我继续扩展该结构。请注意,我已经简化了这个示例以帮助生成代码
我已将自定义 UIButton 编码为: class AccountOpeningButton: UIButton { required init?(coder aDecoder: NSCode
我正在通过在线类(class)学习 iOS 开发,每次我制作自定义 View (自定义表格 View 单元格、 Collection View 单元格等)时,讲师总是实现此初始化程序: require
为将来阅读本文的人提供一些背景知识(以防它未锁定)。我倾向于使用高级语言进行编程以首先理解问题。在涵盖所有可能的极端情况后,我继续将代码翻译成 C++(或 C)。 我编写的大部分代码都包含数学,因此
我正在尝试为1.7.10安装地雷编解码器包。我已经下载了src forge软件包,并且正在使用终端。我用它来安装它。 http://www.minecraftforge.net/wiki/Instal
我正在尝试使用 Matlab 编码器从 .m 文件生成 mex 代码文件。其代码是 function [result,x]=tesrank(A,x) result = []; n = x; for c
我正在尝试使用 Matlab Coder 工具将一些 matlab 代码转换为 c 动态库 (.dll)。我正在一些简单的示例代码上尝试它,但我不断收到相同的错误,但找不到解决方案。 我的代码是: f
我正在学习 Java,作为高中作业之外的个人项目,我决定制作一些数学求解程序来练习。 为了热身,我决定编写一个基本的计算器程序......并且它有效......有点。所以...请帮助我! 目标: ->
当我尝试运行 int(coder:) 时它显示此错误,我不知道为什么? “不可失败的初始化器要求 init(coder:) 不能被可失败的初始化器 ('init?') 满足” class Note:
需要初始化一个对象,但我的初始化程序不合作。到目前为止我已经知道了,但我不确定如何将参数传递给我的对象初始值设定项。 init(coder aDecoder: NSCoder, caseImage:
我有一个继承自 PFTableViewCell 的自定义类。我想使用 Storyboard 来初始化类(class)。我使用“tableView.dequeueReusableCellWithIden
我正在尝试暂停或停止一个永远重复的 SKAction,这应该在用户按下暂停按钮时发生。我找到了一种停止音乐的方法,但由于这个错误,我无法调用它所在的函数。它准确地说:Missing argument
我有一个函数 sq_dist()。可以像这样调用此函数 sq_dist(a,b) 或 sq_dist(a)。此功能包括缓慢的操作,因此我正在尝试制作它的 Mex 版本,希望它运行得更快。我正在使用 M
我是一名优秀的程序员,十分优秀!