使用不同的编译器在Linux上创建mex for Matlab

使用不同的编译器在Linux上创建mex for Matlab,linux,matlab,gcc,mex,icc,Linux,Matlab,Gcc,Mex,Icc,我知道LinuxMatlab只对mex的GCC4.9提供了官方支持 有人知道如何让Linux英特尔编译器(icc)在Linux或更高版本的gcc上与mex一起工作吗 这是最近版本的MATLAB(2015-2017)。 < P>我假设你谈论C++项目。是的,它可能与更新版本的gcc 检查以了解哪个Matlab使用哪个gcc版本 告诉您的新版本的gcc使用Matlab制作的ABI版本的gcc版本编译项目和所有依赖项 告诉Matlab在/UR/LIB中使用标准C++库,而不是它本身包含的标准库。它是

我知道LinuxMatlab只对mex的GCC4.9提供了官方支持

有人知道如何让Linux英特尔编译器(icc)在Linux或更高版本的gcc上与mex一起工作吗


这是最近版本的MATLAB(2015-2017)。

< P>我假设你谈论C++项目。是的,它可能与更新版本的gcc

  • 检查以了解哪个Matlab使用哪个gcc版本
  • 告诉您的新版本的gcc使用Matlab制作的ABI版本的gcc版本编译项目和所有依赖项
  • 告诉Matlab在/UR/LIB中使用标准C++库,而不是它本身包含的标准库。它是向后兼容的
对于Matlab 2017b,gcc>4.9.x的示例:

  • Matlab2017b是使用GCC4.9.x构建的
  • gcc 4.9.x与
  • 将gcc与编译标志
    -fabi version=8
    一起用于mex文件和所有依赖项
  • 在调用
    matlab
    之前,在shell中导出LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6

“这个软件只支持A,我怎么能做B?”让我尽量回答:即使它很明显:你不能,它只支持AI不知道它是否可能,但是你是否尝试用MATLAB的C++ API编译一个DLL文件在Matlab环境下,比如使用CGuide,或者在IDE下像QT,成功?如果您已经成功地使用了编译器,那么Mex就有很好的机会。仅供参考,mex是一个具有特殊输入函数mexFunction的dll。如果没有网关功能,则必须使用calllib加载通用DLL。我记得我在什么地方见过关于如何用cmake编译mex的文章。OK找到了。希望这有帮助。