Binding 处理C风格回调的绑定生成器(比如SWIG)?

Binding 处理C风格回调的绑定生成器(比如SWIG)?,binding,swig,Binding,Swig,我最近使用SWIG为一个C库编写了一个绑定。虽然很多函数都是直截了当的,只使用了基本的SWIG功能,但当我需要支持一个以C回调作为参数的函数时,我遇到了麻烦,而SWIG不支持这个函数。我通过编写特定于Python的代码来提供一个自定义回调来解决这个问题,在这个回调中,我调用Python的“eval”函数来计算提供的可调用函数 虽然这很有效,但对我来说很不幸。。我一直希望使用SWIG来利用它对数十种语言的支持,但现在我不得不找出我希望支持的每种语言的回调。这使得我的绑定工作量变得不那么有用,因为我

我最近使用SWIG为一个C库编写了一个绑定。虽然很多函数都是直截了当的,只使用了基本的SWIG功能,但当我需要支持一个以C回调作为参数的函数时,我遇到了麻烦,而SWIG不支持这个函数。我通过编写特定于Python的代码来提供一个自定义回调来解决这个问题,在这个回调中,我调用Python的“eval”函数来计算提供的可调用函数

虽然这很有效,但对我来说很不幸。。我一直希望使用SWIG来利用它对数十种语言的支持,但现在我不得不找出我希望支持的每种语言的回调。这使得我的绑定工作量变得不那么有用,因为我现在必须多次手动解决相同的问题——这与使用SWIG的目的相反


有没有像SWIG这样的工具也能处理C回调?

有点粗浅,但是如果你重新编译C++项目中的C项目或者创建一个C++扩展,那么你可以利用虚拟函数重载。p>

大多数SWIG语言模块都支持这样一种支持,即允许目标语言中的类从C++库中派生类。这样,任何被重写的虚拟函数都可以充当回调函数

>有点粗略,但是如果你重新编译C++项目中的C项目或者创建一个C++扩展,那么你可以利用虚拟函数重载。p>

大多数SWIG语言模块都支持这样一种支持,即允许目标语言中的类从C++库中派生类。这样,任何被重写的虚拟函数都可以充当回调函数