我正在尝试通过使用SWIG 1.3在Java中实现一些C代码。现在,我必须将一些现有的C重建为Java代码,并提供指向C方法的Java函数的函数指针。
C代码:net.c:
void register_message_handler( context_t *ctx, message_handler_t handler) {
context->msg_handler = (void (*)( void *, coap_queue_t *, void *)) handler;
}
client.c:
void message_handler(context_t *ctx, queue_t *node, void *data) {
...
}
int main(int argc, char **argv) {
// setup ctx
register_message_handler( ctx, message_handler );
}
我在Java中已经拥有的一切是:
public static void message_handler(def.SWIGTYPE_p_context_t ctx, def.SWIGTYPE_p_queue_t node, String data ) {}
并且应该以与上述C代码相同的方式将其注册为回调,现在在Java中:
net.register_message_handler(ctx, message_handler);
我发现的是
http://www.swig.org/Doc1.3/SWIGDocumentation.html#SWIG_nn30,在本章结尾处包含未定义的参考:“现在,有关功能指针支持的最后说明。尽管SWIG并未提供支持通常允许用目标语言编写回调函数,这可以通过使用类型映射和其他高级SWIG功能来完成。这将在下一章中进行描述。”
这指的是哪里?
我也找到了C ++的解决方案,但是有没有办法使它适应C? 具有Java的Swig C
++在多态回调函数 morphic-callback-functions
上丢失类型
谢谢你的帮助。