c++ - 使用Matlab C++编译器将C++代码转换成Matlab

标签 c++ matlab compiler-errors mex

我正在尝试在 Matlab 中使用 MinGW-w64 编译器。我安装了它,Matlab 可以识别编译器。我的问题有两个:

1) 我无法将所有 .c 代码编译到 header 中。我输入了

 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我还阅读了 mex 和 loadlibrary 的 Matlab 帮助文件。

非常感谢任何建议,因为这是我第一次混合使用 C++ 和 Matlab。提前致谢!

最佳答案

你想这样做:

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 中可用的函数。

关于c++ - 使用Matlab C++编译器将C++代码转换成Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53216367/

相关文章:

matlab - 生成 N 个随机点,它们之间有一定的预定义距离

c++ - 为什么我在从 time(NULL) 播种随机数生成器时收到可能丢失数据的警告?

c - GTK+在Bloodshed Dev-C++中编译编译错误

c++ - 如何在 Visual Studio 2010 中使用 C++(使用非托管代码)创建分步向导

C++:从类内访问 operator[] 的便捷方式?

c++ - 使用过剩显示时遇到问题

matlab - 在 Matlab 中将颜色合并到图形表示中

c++ - 单例模板设计问题

matlab - 在 MATLAB 中模拟 1,000 个几何布朗运动

Haskell - 编译错误