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


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

mex需要設定接駁的C/C++編譯器,官方文檔在這里:https://ww2.mathworks.cn/help/matlab/matlab_external/changing-default-compiler.html

簡要總結下:

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。

查閱文檔以及嘗試后總結為:

  1. 修改/path/to/matlab/bin/mexopt.sh里面的CCCXX變量的值,是沒有用的,即便重啟了matlab,mex仍然是調用系統PATH中的gcc和g++,而不是mexopt.sh中的CC和CXX

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM