matlab設定mex接駁的C C 編譯器

2021-09-08 12:12:19 字數 805 閱讀 4448

使用c/c++編寫核心演算法,使用matlab呼叫演算法、做上層封裝,通常是提公升效率並提供易用性的乙個不錯的選擇。

mex需要設定接駁的c/c++編譯器,官方文件在這裡:

簡要總結下:

windows

在windows下用visual studio作為c/c++編譯器,允許mex設定或切換在不同版本的vs:

mex -setup c++
linux

我使用的是ubuntu16.04。ubuntu下的gcc版本通常比matlab的mex需要的gcc版本要高。比如ubuntu16.04的gcc預設是5.4版,但matlab2017b只能用gcc-4.9。

查閱文件以及嘗試後總結為:

修改/path/to/matlab/bin/mexopt.sh裡面的cccxx變數的值,是沒有用的,即便重啟了matlab,mex仍然是呼叫系統path中的gcc和g++,而不是mexopt.sh中的cc和cxx

path中的gcc和g++(也就是/usr/bin/gcc和/usr/bin/g++),是乙個不好的選擇:因為它雖然解決了matlab中的mex編譯警告、錯誤,但是整個作業系統中的其他各種庫都有可能收到影響從而無法執行。

正確的解決方法是,使用mex命令時臨時設定gcc和g++版本,舉例:

mex gcc='/usr/bin/gcc-4.9' private/edgesdetectmex.cpp -outdir private

Matlab與C 混合MEX程式設計

一 mexfunction 與c中的main函式一樣,mex程式中的開始函式為mexfunction.預設變數引數是 void mexfunction int nlhs,mxarray plhs,int nrhs,const mxarray prhs 其中nlhs指的是在呼叫函式時返回值的個數 pl...

MATLAB編譯C 問題(MEX檔案)

由於作業原因,需要matlab和c 聯合程式設計,matlab編譯c 檔案遇到一系列問題,現在彙總如下 首先關於大部分基礎知識,參閱這篇文章 matlab與c c 聯合程式設計之從matlab呼叫c c 執行mex setup後,matlab顯示如下 由於我使用的是matlab 2013a vs20...

VC 編譯 MATLAB 的 mex 檔案

vc 編譯 matlab 的 mex 檔案 mex 檔案是 matlab 呼叫其他程式語言程式或演算法的介面。在 windows 環境中,mex 檔案是擴充套件檔名為 dll 的動態鏈結庫,可以在 m 程式中直接呼叫,使用者可以通過 234 matlab 實用教程 matlab 提供的命令 mex ...