?
seldon schrieb:
Im JNI gibt es für jede Ellipsenfunktion auch eine, die va_list enggegennimmt. zum Beispiel kann man
va_list args;
// va_start(args, yadda yadda);
env->CallVoidMethodV(listener, changeNotifyListenerChangeOccurredMethodID, args);
// ^-- V hier.
va_end(args);
schreiben.
Entschuldige, aber ich verstehe nicht ganz wie mir das helfen soll. Ich hätte gerne die Möglichkeit, dass meine C++-Bibliothek eine Java-Funktion als Callback aufrufen kann. Meine C++-Bibliothek beinhaltet eine Klasse XVAttributeManager mit einer Methode registerChangeNotifyFunction:
class XVAttributeManager : boost::noncopyable {
public:
// you can register a function, which will be called from lookForChanges, waitForChanges or observeChanges in case the value of an attribute has changed
void registerChangeNotifyFunction(boost::function<void (std::size_t adaptorIndex, std::size_t attributeIndex, int32_t value)> func);
// Rest weg gelassen
};
Damit ich mittels dieser Methode eine Java-Funktion als Callback setzen kann, muss ich es schaffen den ganzen JNI-Krams(jobject und jmethodID) an env->CallVoidMethod() zu binden, sodass eine Funktion mit der Signatur:
void wrappedJNICallVoidMethodFunction(std::size_t, std::size_t, int32_t)
herauskommt.