编译C++ 11代码作为MATLAB mex文件的一部分

Ben*_*Uri 6 c++ matlab-deployment c++11

我有一段用C++ 11编写的代码,我想将其编译为GNU/Linux的MATLAB MEX文件的一部分.

问题是Linux上的MATLAB仅支持GCC 4.3(及更早版本),并且不支持编译我的C++ 11代码所需的GCC 4.7.

有可能解决这个问题吗?

是否可以通过使用GCC 4.7编译一些目标文件并使用GCC 4.3将它们链接到MEX文件来解决这个问题?

提前致谢!

ex0*_*du5 5

如果您可以在4.3扩展中编写任何代码并进行编译,那么只需编写代码来编写您在4.7中编写和编译的共享对象.使用4.7 .so来完成所有c ++ 11工作,只需通过C接口将信息传递给它.您编写的4.3版本可以访问所有MATLAB互操作资料.

你也可以通过各种其他方式做到这一点,但这是最干净的.您不应该尝试将目标文件链接到4.3扩展名,因为您将访问两个不同版本的标准库(完全不同),并且您不能使用不同的布局/方法/等具有相同类的多个定义.你将与​​c ++的一个定义规则(ODR)作斗争.