我有一个接受 lambda 作为参数的 c++ 函数。这个函数调用一段java代码。
我想知道一旦完成,我将如何让 java 代码调用 lambda,实际上是回调 C++ 代码。
我有一个接受 lambda 作为参数的 c++ 函数。这个函数调用一段java代码。
我想知道一旦完成,我将如何让 java 代码调用 lambda,实际上是回调 C++ 代码。
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
Java 不知道 C++ 或 lambda。您应该准备一个通用的 C 回调,它将知道要执行哪个 lambda。