2017-03-21 61 views
7

我想问一下关于如何在Ubuntu 16.04中通过g ++编译使用MATLAB引擎的C++代码的分析说明。编译在Ubuntu 16.04中使用MATLAB Engine的C++代码,通过g ++

出于您的回答的目的,假设您使用默认matlab安装提供的示例代码之一来达到此目的。

请在回答时考虑我是一名初学者,使用linux,g ++和gcc编译工具。

回答

3

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

  1. 包含在PATH变量以下路径:

    一)的位置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

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

0

在C/C编译过程++分两个阶段被划分:

首先,源代码被转换为与倍数机器代码的编译对象文件(.o或.OBJ)。

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

C/C++运行MATLAB发动机需要三件事节目:

1>一种编译器,该用MATLAB引擎兼容。

2>引用API头文件(用于c的'。h'或用于C++的'.hpp')用于编译。

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

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

由于这pdf建议,API头文件应该有$ matlabroot /的extern /包括和.so文件应该在$ matlabroot/ 斌/ glnax64其中$ matlabroot是您的MATLAB安装文件夹

设置环境变量

打开与CTRL + ALT + T和类型的temnial:

setenv PATH $matlabroot/bin:$matlabroot/sys/os:$PATH 

那么你可以去到源文件所在的文件夹,假设$ matlabroot /的extern /例子/ 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斌

并与外部符号链接的其他东西:

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

要小心,因为这条路sugested你是一个x64体系结构机器上,如果你不是,路径可能会略有不同。

然后,你可以通过做./engDemo

执行文件

我不能安装在我使用的,所以我无法测试我给你的指令laptot Matlab引擎,但它应该是这样做。

希望它有帮助!