我有一个c ++函数,它接受一个lambda作为参数。这个函数调用一段java代码。
我想知道一旦完成,我将如何让java代码调用lambda,实际上是回调C ++代码。
答案 0 :(得分:1)
JavaCPP这样做。例如,C ++中的以下代码:
#include "jniFoo.h"
int main() {
JavaCPP_init(0, NULL);
foo(6, 7);
}
使用这个Java类:
import com.googlecode.javacpp.*;
import com.googlecode.javacpp.annotation.*;
public class Foo {
public static class Callback extends FunctionPointer {
public @Name("foo") void call(int a, int b) {
System.out.println("bar " + a * b);
}
}
}
产生以下输出:
bar 42
答案 1 :(得分:0)
Java不懂C ++或lambdas。您应该准备一个通用的C回调,它将知道要执行哪个lambda。