我计划在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编译器不会将MATLAB代码转换为C代码,而且已经很久没有这样做了。
相反,它会对MATLAB代码进行存档和加密,并创建一个包装器(可以是可执行文件、库,如果您还可以访问任何Builder产品,也可以是.NET程序集、Java.jar文件或Excel加载项)。这个包装器可以解密你的MATLAB代码,并在MATLAB编译器运行时执行它,它需要包含在你的应用程序中(但可以免费重新分发)。
你将无法在iOS上运行MCR——它的占地面积太大了。如果你的目标是使用Objective-C的另一个平台,你可以使用MATLAB编译器生成一个库,并从你的Objective-C中调用它。
MATLAB编译器(与MATLAB编译器不同)可以将MATLAB语言的一个子集转换为C代码。如果你的目标是iOS,这将是一种方法,或者你可以远程运行MATLAB代码,并让你的应用程序通过网络访问它。
我对你写的有点困惑,所以我可能没有回答你真正的问题:
Matlab文档提供了关于如何使用C程序中的Matlab引擎的明确说明。由于Objective-C只是带旋钮的C,我认为没有理由不从Objective-C程序调用引擎。Matlab引擎在运行时所看到的都是有效的调用,它不知道调用程序是用什么语言编写的
我认为,对于你使用mcc是无关紧要的;您需要的是Mac上的Objective-C编译器。Matlab文档表明,XCode 4.1版之前包含的编译器适用于Matlab引擎应用程序。根据我的经验,可能需要对编译器选项进行一些修改,才能使最新的编译器与Matlab的安装配合使用,但仅此而已。
如果您计划使用Objective-C调用Matlab,您可能不想从为算法核心编写M文件开始。事实上,你可能会,但Matlab引擎并不是真正运行M文件,它执行外部程序(如Objective-C程序)发送给它的命令。您的开发路线可能是(1)编写M文件来实现算法,然后(2)在需要Matlab功能的关键步骤编写Objective-C程序来调用Matlab引擎。您可以编写应用程序以使引擎运行M文件(我认为),但这超出了我的经验。
虽然你可以使用Matlab运行编译器来构建你的程序,但在这种情况下,你可能最好使用XCode(或你喜欢的Mac IDE)来构建程序,注意确保与Matlab引擎建立正确的链接。再次,文档解释了您需要做什么。
不涉及包装。不需要M文件。祝你好运,让Matlab引擎在iOS上运行!