通过g ++编译在Ubuntu 16.04中使用MATLAB Engine的c ++代码

时间:2017-03-21 20:17:04

标签: c++ gcc g++ ubuntu-16.04 matlab-engine

我想询问有关如何编译在Ubuntu 16.04到g ++中使用MATLAB Engine的c ++代码的分析说明。

为了您的答案,假设您为此目的使用默认matlab安装提供的示例代码之一。

请回答时请考虑我是linux,g ++和gcc编译工具的初学者。

2 个答案:

答案 0 :(得分:4)

我假设你想知道使用Linux终端中的g ++编译c ++代码(它调用MATLAB引擎)的过程。为此,请按照以下步骤操作:

  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 :(得分:1)

C / C ++中的编译过程分为两个阶段:

首先,将源代码转换为具有多个目标文件(.o或.obj)的机器代码的编译。

然后,将目标文件转换为单个可执行文件(.dll或.exe)的链接。

运行matlab引擎的C / C ++程序需要三件事:

1>与matlab引擎兼容的编译器。

2 - ;引用API头文件(' .h'代表c或' .hpp'代表c ++)进行编译。

3>外部符号链接引用库(' .lib' for windows,' .so' for linux)。

您可以看到基于Linux的可编译系统编译器here。 GCC C / C ++ 4.9.x兼容,因此您可以使用g ++。

正如pdf建议的那样,API头文件应该是 $ matlabroot / extern / include ,而.so文件应该在 $ matlabroot / bin / glnax64 其中 $ matlabroot 是你的matlab安装文件夹

设置环境变量

ctrl + alt + T 打开你的temnial,然后输入:

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的文件。 -leng -lmat -lmex -lut选项可能是需要的,因为matlab解释器的使用应该位于 $ matlabroot / bin

外部符号链接:

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

要小心,因为这条路径已经消耗在你的 x64架构机器上,如果你没有,路径可能会略有不同。

然后你可以通过执行./engDemo

来执行你的文件

我无法在我正在使用的laptot上安装matlab引擎,所以我无法测试我给你的指令,但应该这样做。

希望它有所帮助!!