使用MATLAB Engine和g++编译C++源代码

8

如果您能提供一些指导,告诉我们如何在Ubuntu环境下使用g++和MATLAB引擎编译C++源代码文件,那将非常有帮助。

2个回答

4
我假设您想了解如何使用Linux终端中的g++编译调用MATLAB引擎的C ++代码的过程。为此,请按照以下步骤操作:
  1. 将以下路径包含在PATH变量中:

    a) MATLAB的位置,即 $matlabroot/bin b) $matlabroot/sys/os

    您可以使用命令 'setenv PATH $matlabroot/bin:$matlabroot/sys/os:$PATH ' 来执行此操作。

  2. 在命令提示符中,使用cd命令导航到cpp代码所在的目录。例如,如果要编译engdemo.cpp,则需要导航到$matlabroot/extern/examples/eng_mat/engdemo.cpp

  3. 您需要使用所需的包含文件和库来调用编译器。为此,可以使用-I和-L开关。请注意顺序很重要。因此,您需要使用以下命令:

    g++ engdemo.cpp -I "$matlabroot/extern/include" -L "$matlabroot/bin/glnxa64" -leng -lmat -lmex -lut -o engdemo.o

  4. 上述命令将生成一个对象文件engdemo.o。要执行此操作,请使用命令./engdemo.o

    您可以参考http://www.umiacs.umd.edu/~jsp/Downloads/MatlabEngine/MatlabEngine.pdf文档,以获取有关C++和MATLAB的更多帮助。


1
在C/C++中,编译过程分为两个阶段:
首先是编译阶段,将源代码转换成多个目标文件(.o或.obj)的机器码。
然后将目标文件链接起来,生成一个单独的可执行文件(.dll或.exe)。
运行Matlab引擎所需的三个条件:
1> 与Matlab引擎兼容的编译器。
2> 引用API头文件('.h'用于c或'.hpp'用于c++)进行编译。
3> 引用库(对于Windows来说是'.lib',对于Linux来说是'.so')进行外部符号链接。
您可以在此处查看兼容基于Linux的系统编译器。GCC C/C++ 4.9.x是兼容的,所以您可以使用g++。
作为这个pdf所建议的,API头文件应该在$matlabroot/extern/include中,.so文件应该在$matlabroot/bin/glnax64中,其中$matlabroot是你的Matlab安装文件夹。请注意,保留HTML标签。 设置环境变量 打开您的终端,使用ctrl + alt + T组合键,然后输入:
setenv PATH $matlabroot/bin:$matlabroot/sys/os:$PATH

您可以使用以下命令转到源文件所在的文件夹,假设是$matlabroot/extern/examples/eng_mat/
cd $matlabroot/extern/examples/eng_mat/

你需要使用以下方式进行编译:

g++ -c engDemo.cpp -I '$matlabroot/extern/include' -leng -lmat -lmex -lut

接下来,应该创建一个名为engDemo.o的文件。 由于使用matlab解释器,可能需要使用-leng -lmat -lmex -lut选项等其他内容,该解释器应位于$matlabroot/bin中。

并且与外部符号链接:

g++ -o engDemo -L '$matlabroot/bin/glnax64'

请注意,此路径建议您使用的是x64架构机器,如果不是,则路径可能略有不同。

然后,只需执行./engDemo即可运行您的文件。

我无法在我正在使用的笔记本电脑上安装matlab引擎,因此我无法测试我给您的指令,但应该是这样完成的。

希望能对您有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接