【发布时间】:2017-08-13 17:21:23
【问题描述】:
如果您能提供一些关于如何在 Ubuntu 环境中使用带有 g++ 的 MATLAB 引擎编译 c++ 源代码文件的指导,将会很有帮助。
【问题讨论】:
标签: c++ gcc g++ matlab-engine
如果您能提供一些关于如何在 Ubuntu 环境中使用带有 g++ 的 MATLAB 引擎编译 c++ 源代码文件的指导,将会很有帮助。
【问题讨论】:
标签: c++ gcc g++ matlab-engine
我假设您想了解使用 Linux 终端中的 g++ 编译 c++ 代码(调用 MATLAB 引擎)的过程。为此,请按照以下步骤操作:
在 PATH 变量中包含以下路径:
a) MATLAB 的位置,即 $matlabroot/bin b) $matlabroot/sys/os
您可以使用以下命令执行此操作 'setenv PATH $matlabroot/bin:$matlabroot/sys/os:$PATH' .
在命令提示符下,使用 cd 命令导航到 cpp 代码所在的目录。例如,如果您正在编译 engdemo.cpp,则需要导航到 $matlabroot/extern/examples/eng_mat/engdemo.cpp
您需要使用所需的包含文件和库调用编译器。为此,您可以使用 -I 和 -L 开关。请注意,顺序很重要。所以你需要使用如下命令:
g++ engdemo.cpp -I "$matlabroot/extern/include" -L "$matlabroot/bin/glnxa64" -leng -lmat -lmex -lut -o engdemo.o
上述命令将生成一个目标文件 engdemo.o。要执行此操作,请使用命令 ./engdemo.o
您可以参考http://www.umiacs.umd.edu/~jsp/Downloads/MatlabEngine/MatlabEngine.pdf 的文档以获取有关 C++ 和 MATLAB 的更多帮助。
【讨论】:
C/C++中的编译过程分为两个阶段:
首先,将源代码转换为具有多个目标文件(.o 或 .obj)的机器代码的编译。
然后,将目标文件转换为单个可执行文件(.dll 或 .exe)的链接。
运行matlab引擎的C/C++程序需要三样东西:
1> 与matlab 引擎兼容的编译器。
2> 参考 API 头文件('.h' 用于 c 或 '.hpp' 用于 c++)进行编译。
3> 外部符号链接引用库(Windows 为“.lib”,Linux 为“.so”)。
您可以看到兼容的基于 linux 的系统编译器here。 GCC C/C++ 4.9.x 是兼容的,所以你可以使用 g++。
正如pdf 所建议的那样,API 头文件应该在 $matlabroot/extern/include 中,.so 文件应该在 $matlabroot/ 中 bin/glnax64 其中 $matlabroot 是您的 matlab 安装文件夹
设置环境变量
使用 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 的文件。 由于使用了应该位于 $matlabroot/bin
中的 matlab 解释器,因此可能需要 -leng -lmat -lmex -lut 选项。与外部符号链接:
g++ -o engDemo -L '$matlabroot/bin/glnax64'
请小心,因为此路径表明您在 x64 架构 机器上,如果不是,则路径可能会略有不同。
然后你就可以通过 ./engDemo 来执行你的文件了
我无法在我正在使用的笔记本电脑上安装 matlab 引擎,所以我无法测试我给你的指令,但应该这样做。
希望对你有帮助!!
【讨论】: