Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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
Objective c 如何从Objective C调用MATLAB代码_Objective C_Matlab_Mcc - Fatal编程技术网

Objective c 如何从Objective C调用MATLAB代码

Objective c 如何从Objective C调用MATLAB代码,objective-c,matlab,mcc,Objective C,Matlab,Mcc,我打算用Matlab编写算法代码。我需要将.m文件转换成Objective-C可以访问的格式。当我尝试mcc时,出现了以下错误 The -t switch is no longer supported; the Compiler no longer generates C/C++ source code for M-functions (it generates wrapper functions instead, see the documenation for -W). 如果mcc没有

我打算用Matlab编写算法代码。我需要将.m文件转换成Objective-C可以访问的格式。当我尝试mcc时,出现了以下错误

The -t switch is no longer supported; the Compiler no longer generates C/C++ 
source code for M-functions (it generates wrapper functions instead, see 
the documenation for -W).

如果mcc没有创建C源代码,如何生成包装器?我是否必须同时复制m文件和包装器才能使一切正常工作?。这些包装器在iOS中工作吗?

我对你写的东西有点困惑,所以我可能没有回答你真正的问题:

Matlab文档提供了关于如何使用C程序中的函数的清晰说明。既然Objective-C只是开着旋钮的C,我看不出有什么理由不应该从Objective-C程序调用引擎。Matlab引擎在运行时所看到的都是有效的调用,它不知道调用程序是用什么语言编写的

我认为对于你来说,使用mcc是无关紧要的;您需要的是Mac上的Objective-C编译器。Matlab文档表明,XCode至v4.1版本中包含的编译器适用于Matlab引擎应用程序。根据我的经验,可能需要稍微修改一下编译器选项,才能使较新的编译器与您的Matlab安装一起工作,但仅此而已

如果您计划使用Objective-C调用Matlab,您可能不想从为算法核心编写M文件开始。实际上,您可能会这样做,但Matlab引擎并不是真正运行M文件,而是执行外部程序(如Objective-C程序)发送给它的命令。您的开发路线可能是(1)编写M文件来实现算法,然后(2)在需要Matlab功能的关键步骤编写调用Matlab引擎的Objective-C程序。您可以编写应用程序使引擎运行M文件(我认为),但这超出了我的经验

虽然您可以使用Matlab运行编译器来构建程序,但在这种情况下,您最好使用XCode(或您首选的Mac IDE)来构建程序,注意确保与Matlab引擎建立正确的链接。同样,文档说明了您需要做什么


不涉及包装。不需要M文件。祝你在iOS上运行Matlab引擎好运

MATLAB编译器不会将MATLAB代码转换为C代码,而且很长时间以来都没有这样做

相反,它会归档和加密您的MATLAB代码,并创建一个包装器(可以是一个可执行文件、一个库,或者,如果您还可以访问任何生成器产品,.NET程序集、Java.jar文件或Excel加载项)。这个包装器对您的MATLAB代码进行解密,并在MATLAB编译器运行时执行它,该运行时需要包含在您的应用程序中(但可以自由地重新发布)

你将无法在iOS上运行MCR——它的占地面积太大了。如果您的目标是另一个使用Objective-C的平台,您可以使用MATLAB编译器生成一个库,并从Objective-C调用它

MATLAB编码器(与MATLAB编译器不同)可以将MATLAB语言的子集转换为C代码。如果你的目标是iOS,这将是一种方法,或者你也可以远程运行你的MATLAB代码,让你的应用程序通过网络访问它