SWIG新手探索包装大型C ++库主要用于Python访问的可行性。与开发C ++的开发人员一起提议编写一个C互操作层,然后将其包装在SWIG中。
两个可能的选择是:
Base| Interop | Scripting Access
============================================
1) C++ | SWIG | Supported Languages
2) C++ | C | SWIG | Supported Languages.
#2是否会增加一些我缺少的功能或稳定性?它看起来像是一层增加的复杂性。任何人都可以建议为什么C层可能是更好的SWIG包装界面? (一般来说,你没有看过图书馆等)。
答案 0 :(得分:2)
SWIG非常强大,它将消除许多你必须编写的费力的样板代码。即使使用boost :: python也有这样的样板代码,尽管远比从头做任何事情要少得多。 SWIG的优点在于它还可以轻松地与其他语言集成。例如,我有一个C ++库,我正在向C#公开,所以我可以在C#/ WPF中构建GUI,并使用相同的SWIG输入文件,暴露给Lua,以便GUI可以通过C ++层编写脚本。太棒了!
关于#2选项的C层,我没有看到好处,除非你想要与不支持C ++的语言集成,但我不知道这种语言(SWIG支持大约20个)我只知道4,所以也许其中一个有这样的限制)。 SWIG非常强大,实际上可以包装相当复杂的接口。使用SWIG,如果您希望使用%inline和%extend指令,则可以完全更改API。我想不出需要C层的原因。
答案 1 :(得分:0)
查看直接使用C ++的Boost Python。