我正在開發一個音頻庫(AAR),它有助於處理某些信號處理應用程序。在我的庫中,我將擁有一個通用的信號處理模塊(用C++編寫並由JNI分層)。處理完畢後,我的庫需要調用一些「回調」函數(由庫用戶定義),以便用戶可以對處理後的信號進行「定製」響應。如何將C++函數指針傳遞到庫的JNI函數
我希望這是用C++接口的,所以這個用戶定義的「回調」函數也可以用在我的iOS庫中。但我不知道該怎麼做。
以下是我的問題
的例子----------這是我的AAR庫--------------
在JNI.C
void (*userCallback)(int []);
void onAudioRecorded(int[] audio) { // this function is called by Java
// So some library processing
int[] processedAudio = libraryProcessing(audio);
// Pass this processed audio to the user-defined function
userCallback(audio);
}
----------這裏是一些用戶的項目包括我AAR庫--------------
在用戶應用程序的user_jni.c
void setLibraryCallback() {
// HERE IS MY PROBLEM
// HOW CAN I SET MY LIBRARY’s userCallback to onAudioProcessed
}
void onAudioProcessed(int[] processedAudio) {
// Do some further processing
int[] finalAudio = userDefinedProcessing(processedAudio);
// Make some reactions based on finalAudio
}
這不是C,不要垃圾標籤!並且不要C++。 – Olaf