使用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裡面的cc
和cxx
變數的值,是沒有用的,即便重啟了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 ...