由于我对Linux系统缺乏了解,似乎我在这里遇到了一个真正的问题: 我已经下载了一些开源代码,
是用C
使用complex.h,所以我认为它是ANSI C99
附带为在Linux系统下编译而设计的makefile
提供IDL,MATLAB,Python等接口。
我确实熟悉在基于Windows的MATLAB环境下编译C / MEX文件,但在这种情况下,我甚至不知道从哪里开始。该项目分布在几个文件夹中,包含许多源文件和头文件。首先,我用来编译MEX文件的Visual Studio 2010编译器直到现在都不符合C99标准,即它不能识别complex.h标题。
任何有关编制此项目的帮助都将受到高度赞赏。特别是,我有以下问题: 1)是否有可能从MEX文件中自动提取编译信息并将其传输到Windows实际? 2)是否有任何免费的编译器能够编译C99的东西,这也很容易嵌入到MATLAB中?
答案 0 :(得分:1)
我已经完成了这项工作(将内部遗留代码inc.mex文件移至Win64)。我无法推荐这种体验。
我猜测有一个主makefile然后通过子目录中的makefile工作 - 读完Linux下的编译说明,它会让你知道发生了什么,也可以讨论做什么如果你想改变编译器。一旦找到兼容的编译器,下一步就是了解makefile正在做什么并相应地编辑它们(更改路径,编译器,编译器标志等)。
然后,从记忆中(不久前),你可以通过越来越模糊的编译错误享受神奇的神秘之旅。记录所有内容,因为如果你确实这样做了,那么你就不会有两次这样做了。
答案 1 :(得分:1)
Windows上的MATLAB R2016b现在支持MinGW编译器。我成功地使用它来编译主要为Linux / gcc编写的代码。我在MATLAB的Add-On菜单中安装了这个(搜索MinGW)。
就我而言,我正在使用遗留代码工具构建。我需要做的与正常情况不同的是告诉编译器通过编译器标志支持c99。这就是诀窍:
legacy_code('compile', def, {'CFLAGS=-std=c99'})
我很难得到旗帜命令(我有一些额外的引号显然已经破坏了东西),并问了The MathWorks,所以归功于他们的支持团队。
如果您使用mex
,我希望能做一些非常相似的事情。
我猜想makefile与你的应用程序无关;你需要告诉mex
或legacy_code
函数有关构建整个应用程序所需的所有文件或链接预构建的库(听起来你没有)。
我希望这有帮助!