Я недавно написал привязку для библиотеки C, используя SWIG.Хотя большая часть этого была проста и использовала только базовую функциональность SWIG, я столкнулся с проблемой, когда мне нужно было поддержать одну функцию, которая принимала обратный вызов C в качестве аргумента, который не поддерживается для SWIG.Я решил эту проблему, написав специфичный для Python код для обеспечения пользовательского обратного вызова, в котором я вызвал функцию 'eval' Python для оценки поставляемого Callable.
Хотя это работало хорошо, для меня это было неудачноя надеялся использовать SWIG, чтобы воспользоваться поддержкой десятков языков, но теперь я застрял в необходимости выяснения обратных вызовов на каждом языке, который я хочу поддерживать.Это делает мои размеры работы по связыванию менее полезными, так как теперь мне приходится много раз решать одну и ту же проблему вручную - противоположность цели использования SWIG.
Есть ли такой инструмент, как SWIG, который также обрабатывает обратные вызовы C?