使用SWIG对C++库进行Matlab绑定

gma*_*s80 12 c++ matlab binding swig

我已经在使用SWIG在Python中移植一些C++库,我对结果的质量印象深刻.所以我想坚持使用SWIG ..

最近有人问我一个Matlab端口.这个想法实际上已经在我的todolist中 ..但是每次我用Google搜索时都没有发现任何足够稳定且易于维护的东西(也是因为我使用Matlab的低技能及其几种调用C/C++的方法码).

根据我的理解,在主分支中有一种不受维护且几乎没有记录的方法可以做到这一点,并且在这样一个方向上的许多其他尝试都没有达到足够的成熟度而成为主要分支的一部分:链接.我想成为跨平台,因此我不认为COM方式可能是我的解决方案.

然而,这次我发现有一个看起来非常有希望的分支:链接 有人已经测试过这个解决方案吗?在这种情况下,从Matlab调用移植的C++代码的简单工作示例将非常有用.

编辑1:我删除了对C++ 11的任何引用

编辑2:matlab分支(在答案中引用)目前正在评估中与swig主人合并(参见:https://github.com/jaeandersson/swig/issues/72https://sourceforge.net/p/ swig/mailman/message/35209729 /)

Joe*_*oel 8

由于我是目前为SWIG实施MATLAB模块的工作的一部分(我在你所链接的邮件中写的),我可以提供一些背景信息并报告2014年11月的状态.

已经做了一些努力来使用各种不同的方法为SWIG实现MATLAB模块.截至今天(2014年11月),它们都没有成功融入SWIG的主要分支(我们希望在不久的将来改变它,见下文).

和你一样,我使用SWIG将一个C++项目(称为CasADi)移植到Python,并且已经在SWIG中开发了几年的MATLAB支持,因为这对我们的项目非常有用.经过努力,我有点参与未能通过概念验证阶段,我决定自己试一试.在今年4月(2014年),我开始编码,它比我预期的要顺畅得多.经过大约两周的编码,我已经实现了核心功能(包装函数,类等),我将其发布到SWIG社区.我很高兴看到SWIG名单上有很多积极的回应,更高兴看到人们喜欢Kris(见他的回答)加入努力并做出了巨大的贡献.

现在模块的状态是它实现了大部分功能,并成功用于CasADi和其他项目.对我来说,它清楚地表明所选择的方法是正确的,即使在模块稳定并记录之前还有一些工作要做.我希望能够再次推动并实际设法将SWIG模块带入可以合并到SWIG主分支的状态.但这取决于我是否/何时设法获得资金来解决这个问题.我相信它很快就会发生.

最后,您的问题提到了C++ 11.这与MATLAB模块的工作实际上是一个完全不同的问题.涉及C++ 11的东西主要是在SWIG中处理的,这与你输出的语言无关.因此,请参阅SWIG中的C++ 11支持.