我试图通过使用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功能来完成.
这将在后面的章节中描述.“
这指的是哪里?
谢谢你的帮助.