0

我有两组代码:

  • MATLAB 代码,以及
  • QT C++ 代码。

我尝试使用mcc带有 msvc2008 编译器的命令将 MATLAB 代码编译为 C++ 库。对于我的 QT C++ 代码,我使用 mingw 进行编译。但是,当我尝试添加 MATLAB 转换后的 C++ 代码时,似乎出现了很多问题。

是否可以将这两种类型的代码混合在一起?有没有人有使用这些语言组合的经验?

!曾尝试使用 Octave,但我不想重新编码我的 MATLAB 代码。我正在尝试寻找直接运行 MATLAB 代码的替代方法。

注意:我需要在 QT 中使用 mingw,因为它是必需的,对于 matlab mcc 命令,我只能选择使用 msvc 编译器。如果我可以将程序作为可移植的独立程序,那将是最好的。我需要使用 MATLAB 代码的原因是因为我需要一些很好的矩阵数学运算函数,也因为使用 MATLAB 进行研究对我来说更容易。

4

2 回答 2

4

当您使用mcc(默认情况下或使用-m option)编译 matlab 代码时,您将获得一个可执行文件。因此,从您的 C++ 文件中,您可以使用 C/C++ command 调用 matlab 可执行文件exec

如果您使用-l option(using mcc),您将获得一个共享库和标题。例如,如果您键入(在 matlab 中):

mcc -l test.m -W cpplib:test.h

这应该产生一个共享库test.libtest.so, 和一个标题test.h

test.h你应该有类似的行:

bool MW_CALL_CONV mlxTest(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);

您可以使用它调用您的 matlab 函数。

此外,您必须在 msvc 项目中添加共享库和标头。

于 2012-01-11T11:14:17.647 回答
1

我通过添加更多 typedef 来修复 mxInt64 和 mxUint64,以使代码将它们识别为 64 字节长的有符号和无符号整数。

于 2012-12-12T16:10:37.057 回答