我有一段用C ++ 11编写的代码,我想将其作为GNU / Linux的MATLAB MEX文件的一部分进行编译。
问题是Linux上的MATLAB仅支持GCC 4.3(及更早版本),并且不支持编译我的C ++ 11代码所需的GCC 4.7。
是否有可能解决问题?
是否可以通过使用GCC 4.7编译一些目标文件并使用GCC 4.3将它们链接到MEX文件来解决这个问题?
提前致谢!
答案 0 :(得分:5)
如果您可以在4.3扩展中编写任何代码并进行编译,那么只需编写代码来编写您在4.7中编写和编译的共享对象。使用4.7 .so来完成所有c ++ 11工作,只需通过C接口将信息传递给它。您编写的4.3版本可以访问所有MATLAB互操作资料。
你也可以通过其他各种方式做到这一点,但这是最干净的。您不应该尝试将目标文件链接到4.3扩展名,因为您将访问两个不同版本的标准库(完全不同),并且您不能使用不同的布局/方法/等具有相同类的多个定义。你将与c ++的一个定义规则(ODR)作斗争。