1

我有一个接受 lambda 作为参数的 c++ 函数。这个函数调用一段java代码。

我想知道一旦完成,我将如何让 java 代码调用 lambda,实际上是回调 C++ 代码。

4

2 回答 2

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
于 2013-10-18T13:30:12.300 回答
0

Java 不知道 C++ 或 lambda。您应该准备一个通用的 C 回调,它将知道要执行哪个 lambda。

于 2013-10-13T15:45:07.937 回答