Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MATLAB编码器hello world开始完成_C++_Matlab_Compilation_Makefile_Matlab Coder - Fatal编程技术网

C++ MATLAB编码器hello world开始完成

C++ MATLAB编码器hello world开始完成,c++,matlab,compilation,makefile,matlab-coder,C++,Matlab,Compilation,Makefile,Matlab Coder,编辑 在经历了这么多的努力之后,我们决定不再花更多的时间来生成错误的.exe文件,而是自己编写代码。谢谢大家抽出时间 _/_//////////////////////////////////////u_/ TL;博士问题 < >我用MATLAB编码器从MATLAB输出C++代码,如何编译?< /P> 完整问题 使用MATLAB应用程序“MATLAB编码器”,可以编译MATLAB代码到C++代码。我知道其中的一些步骤,但不是全部,在谷歌搜索了一段时间后,我只找到了一些答案,但没有成功。让我们一起

编辑

在经历了这么多的努力之后,我们决定不再花更多的时间来生成错误的.exe文件,而是自己编写代码。谢谢大家抽出时间

_/_//////////////////////////////////////u_/

TL;博士问题

< >我用MATLAB编码器从MATLAB输出C++代码,如何编译?< /P> 完整问题

使用MATLAB应用程序“MATLAB编码器”,可以编译MATLAB代码到C++代码。我知道其中的一些步骤,但不是全部,在谷歌搜索了一段时间后,我只找到了一些答案,但没有成功。让我们一起工作,把信息拼凑起来。我打算把这个问题组织起来作为指导

这是我们想要的C++程序的Matlab程序:

disp('Hello World')
0。重写:

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

function[]=Helloworld()
disp(“你好,世界”)
结束
以及另一个名为ScriptHelloWorld.m的文件,其中包含:

HelloWorld();
1。运行MATLAB编码器

一旦你找到它,这个程序就相当简单了。它位于“应用程序”中,然后您可以选择启动MATLAB编码器。这包括2015年及以后的MATLAB。启动后,选择要运行的文件,然后选择运行该文件的文件。这里没有问题,因为它们都是非常简单的文件。我们决定将该项目命名为“HejWorld”

2。获取文件

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

lib的内部如下所示:

mex的内部看起来像这样:

3。编译

这就是我无知的地方。它应该只是编译文件,但事实证明这不是一项容易的任务。我已经找到了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放在examples目录下。在添加Helloworld库作为链接器选项并包含头的路径后,您应该能够将此示例编译为可执行文件

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

function [y] = Helloworld(u)
    y = 2*u;
end
在ScriptHellowWorld.m中

Helloworld(2);

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

如果您计划为运行MATLAB的同一台机器或具有兼容体系结构的机器编译代码,您可以让MATLAB Coder为您进行编译。假设您想要一个静态库。然后从
构建类型
下拉列表中选择该类型,并确保未选中
仅生成代码
。有关详细信息,请参阅文档


代码生成完成后,MATLAB编码器将编译代码,以在
codegen/lib/Helloworld

中生成一个静态库!很抱歉没有早点回复。我尝试了三种方法,但都不管用。您建议的gmake只是给出了“commandnotfound”,但我读到xcode将gmake安装为justmake。运行make-f Helloworld_rtw.mk build会给出“目标模式不包含“%”。停止”。我也尝试过使用gcc,但不起作用。@Rkey gmake与MATLAB:ie一起安装在我的系统上:
/usr/local/MATLAB/R2014a/bin/glnxa64/gmake
在my/usr/local/和/Applications/MATLAB__2015b.app/bin/中没有MATLAB文件夹。这可能是windows或ubuntu的路径吗?是的,这正是我想要的!但是,运行此命令时,我收到一个错误。错误是“未能生成所有二进制输出”,在构建日志中我能找到的最有趣的一行是“未定义对‘WinMain’的引用”。我在用谷歌搜索这个atm机,只是告诉你发生了什么。你在“构建类型”下选择了“可执行文件”吗?如果是这样,链接器会抱怨找不到
main
函数。对于测试,只需将“构建类型”更改为“静态库”或“动态库”,代码就会编译。如果您想要一个可执行文件,您需要指定一个包含主函数的C文件。展示了如何做到这一点。这样做,我们会达到一个类似于我们开始的情况。我们有c代码,但我们没有办法编译它。至少我不知道如何编译它。如果您选择静态或动态库,MATLAB Coder会将C代码编译成这样一个库,您可以在代码目录中找到它。[第页)显示如何在Visual Studio中使用库。否则,如果按照[我在上面发布了,它将向您展示如何编译和链接一个可执行文件。我们只是一步一步地遵循这些说明,两次。两次兰德每次都输出相同的值。经过这么多的努力来创建一个错误的.exe文件后,我们决定继续下去是不值得的。