【问题标题】:C++ source compilation using MATLAB Engine and g++使用 MATLAB 引擎和 g++ 编译 C++ 源代码
【发布时间】:2017-08-13 17:21:23
【问题描述】:

如果您能提供一些关于如何在 Ubuntu 环境中使用带有 g++ 的 MATLAB 引擎编译 c++ 源代码文件的指导,将会很有帮助。

【问题讨论】:

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


    【解决方案1】:

    我假设您想了解使用 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 的更多帮助。

    【讨论】:

      【解决方案2】:

      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 引擎,所以我无法测试我给你的指令,但应该这样做。

      希望对你有帮助!!

      【讨论】:

        猜你喜欢
        • 2011-09-16
        • 2015-11-05
        • 2012-07-18
        • 1970-01-01
        • 2020-03-07
        • 2022-01-09
        • 1970-01-01
        • 2021-03-29
        • 1970-01-01
        相关资源
        最近更新 更多