【发布时间】:2015-05-16 17:27:00
【问题描述】:
我有一个 java 回调函数,我想将其传递给 C++ 包装器,该包装器又将其传递给 C/C++ 函数。
我该怎么做?
我想包装器必须创建某种类型的 C++ lambda 函数或类似的东西来解析参数。
编辑:
这是 C 中的回调签名。我将在 java 中实现这些。 (至少其中一些)
typedef struct ASIOCallbacks
{
void (*bufferSwitch) (long doubleBufferIndex, ASIOBool
void (*sampleRateDidChange) (ASIOSampleRate sRate);
long (*asioMessage) (long selector, long value, void* message, double* opt);
ASIOTime* (*bufferSwitchTimeInfo) (ASIOTime* params, long doubleBufferIndex, ASIOBool directProcess);
} ASIOCallbacks;
顺便说一句:ASIOTime *params 永远不会被使用。 我在 C 函数中设置回调。这是路径...
Java 将回调传递给 C++ 包装器。 C++ 包装器将它们传递给 C 函数以设置回调。
【问题讨论】:
-
要回调的函数是java函数,你是从C/c++调用的?或者你在java中有一个本地函数,调用C/C++函数/包装器?
-
我从 C/C++ 调用回调。
-
好的,你能发布回调的java签名吗(即静态与否、返回类型、带类型的参数、名称、类名)?
-
该类将被称为“回调”。它们将是非静态的。回调将通过 java 类从 java 传递到 C++。
标签: java c++ c callback java-native-interface