使用Matlab C ++编译器将C ++代码转换为Matlab

时间:2018-11-08 21:25:13

标签: c++ matlab compiler-errors mex

我正在尝试在Matlab中使用MinGW-w64编译器。我已经安装了它,并且Matlab可以识别编译器。我的问题是2倍:

1)我无法获取将所有.c代码编译为标头的信息。我输入了

 mex -output HTKToolsFolder *.c
 Building with 'MinGW64 Compiler (C)'.

然后得到

Error using mex
C:\Users\username\Documents\MATLAB\MatlabHTK\htk\HTKTools\HBuild.c:39:46:    fatal error: HShell.h: No such
file or directory
 #include "HShell.h" /* HMM ToolKit Modules */
                                          ^
compilation terminated.

我不确定.h扩展名是什么。该文件位于另一个文件夹中,但是如果我告诉Matlab编译.h文件,它将无法识别文件扩展名

mex -output hfilescompiled *.h
Error using mex
Unknown file extension '.h'.

如果有帮助,某些.c文件会调用HShell.h

第二个问题是,一旦回答了问题1,我可以将其应用于包含许多C ++代码文件夹的目录吗?还是我必须对每个文件夹都使用mex命令?

我已经看过Matlab教程:https://www.mathworks.com/solutions/matlab-and-c.html,并且还阅读了Matlab帮助文件(用于mex和loadlibrary)。

任何建议都将不胜感激,因为这是我第一次混合使用C ++和Matlab。预先感谢!

1 个答案:

答案 0 :(得分:2)

您要这样做:

mex HBuild.c -IC:\Path\To\H\Files

其中C:\Path\To\H\Files是包含HShell.h的目录。

这将创建一个名为HBuild的MEX文件(假设HBuild.c包含一个mexFunction函数,并且不存在其他依赖项)。

如果执行mex *.c,则该目录中的所有C源文件都将合并为一个MEX文件。我怀疑这就是您想要的。您需要为要构建的每个MEX文件调用mex。每个MEX文件将成为MATLAB中可用的函数。