2010-11-12 85 views
2

我最近用SWIG写了一个C库的绑定。虽然这很简单,只使用了基本的SWIG功能,但是当我需要支持一个将C回调作为参数的函数时,我遇到了麻烦,SWIG不支持这个函数。我通过编写特定于Python的代码来解决此问题,以提供一种自定义回调,其中我称Python为“eval”函数以评估提供的Callable。处理C风格回调的绑定生成器(如SWIG)?

尽管这很好用,但对我来说却很不幸..我一直希望能够使用SWIG来利用其对数十种语言的支持,但是现在我被卡在每一种语言中希望支持。这使得我的绑定工作量变得不那么有用,因为我现在必须手动解决相同的问题多次 - 与使用SWIG相反。

是否有像SWIG这样的工具处理C回调?

回答

0

这是有点rounadabout,但如果你用C++重新编译C项目或创建一个C++扩展,那么你可以利用虚函数重载。

大多数SWIG语言模块都支持directors,它们允许目标语言中的类从C++库中的类派生。这样任何重写的虚函数都可以作为回调函数。