【发布时间】:2014-12-27 04:47:07
【问题描述】:
我已经在使用 SWIG 将一些 C++ 库移植到 Python 中,结果的质量给我留下了深刻的印象。所以我想坚持使用 SWIG..
最近有人问我要一个 Matlab 端口。这样的想法实际上已经在我的 todolist 中了。但每次我在 谷歌搜索 时我都找不到足够稳定和易于维护的东西(也是因为对 Matlab 及其调用 C/C++ 代码的几种方法的低技能)。
据我了解,在主分支中存在一种未维护且几乎没有记录的方式来执行此操作,并且在此方向上的许多其他尝试都没有达到足够成熟以成为主分支的一部分:link。我想跨平台,因此我认为 COM 方式可能不是我的解决方案。
不过,这一次我发现有一个分支看起来相当有前途:link 有人已经测试过这个解决方案了吗?以防万一,一个从 Matlab 调用移植的 C++ 代码的简单工作示例会很有帮助..
编辑 1:我删除了对 C++11 的任何引用
编辑 2:matlab 分支(在答案中引用)目前正在评估中,以便与 swig 主合并(请参阅:https://github.com/jaeandersson/swig/issues/72 和 https://sourceforge.net/p/swig/mailman/message/35209729/)
【问题讨论】:
-
你为什么不直接创建 mex 函数来包装你的 C++ 代码呢?
-
因为所有端口都使用相同的工具对我来说似乎很有吸引力。如果我找不到稳定的 SWIG 方式,我一定会听从你的建议!
-
展示如何使用 SWIG 将 C API(我的 C++11 库中已有的)移植到 Matlab 的工作示例也可以解决我的问题!
-
我正在做同样的事情,并且有一个幼稚的想法。为什么不 SWIG 将它用于 JAVA 并将 java 包导入 Matlab?
-
这是许多可能的解决方法之一,但不是最佳解决方案,因为在我看来它有点麻烦并且还可能影响性能.. 只是我的个人意见!