从MATLAB调用C ++代码?

时间:2009-10-21 16:28:11

标签: c++ matlab

由于严重依赖模板,我需要使用C ++编写代码。我想从MATLAB中调用这个代码:基本上,我需要将一些参数传递给C ++代码,并让C ++代码将一个矩阵返回给MATLAB。我听说这可能是一个叫MEX文件的东西,我还在调查。但是我不确定这些MEX文件支持什么。是否支持所有C ++(例如STLBoost)?这有多难?

编辑:我不需要任何共享库,只需要像shared_ptr这样的仅限标题的内容。

4 个答案:

答案 0 :(得分:8)

查看MEX-files Guide,尤其是C ++的25-27节​​。 基本的STL / Boost数据结构应该可以使用,但使用Boost进行线程化可能会有问题。
<{1}}无法在C ++中按预期工作,必须使用cout

答案 1 :(得分:3)

编写使用STL和boost的C ++ MEX文件当然是可能的。通常,您应该能够在C ++ MEX文件中执行任何操作。主要的实际限制是MATLAB已经附带了一堆库,所以如果你正在使用一个需要共享库的升级件(有些只是头文件),你需要匹配你编译的版本与MATLAB一起发货。

例如,MATLAB R2009b附带了boost 1.36(您可以通过查看&lt; matlabroot&gt; / bin /&lt; arch&gt;中的库名称来判断)。

答案 2 :(得分:1)

C ++文件实际上是由外部编译器编译的。使用mex -setup选择哪一个(here是受支持的编译器列表)。因此,你不应该有太多奇怪的事情发生,也不应该受到你能做什么的限制。

去年我做了一些MEX的东西,我的记忆有点生疏,但你需要使用MEX函数构建MATLAB数组。我发现MATLAB文档充足,整个体验并不太痛苦。

答案 3 :(得分:1)

绝对支持STL。可能尚未提升。关键是你在计算机上部署了STL和BOOST,你应该好好去。