由于严重依赖模板,我需要使用C ++编写代码。我想从MATLAB中调用这个代码:基本上,我需要将一些参数传递给C ++代码,并让C ++代码将一个矩阵返回给MATLAB。我听说这可能是一个叫MEX文件的东西,我还在调查。但是我不确定这些MEX文件支持什么。是否支持所有C ++(例如STL和Boost)?这有多难?
编辑:我不需要任何共享库,只需要像shared_ptr
这样的仅限标题的内容。
答案 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,你应该好好去。