2017-03-21 62 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引擎,但它應該是這樣做。

希望它有幫助!