Android ndkはC++関数のオーバーロードをサポートしていますか?それがどうすればいいのですか?
私は純粋なC++コードを書いています。つまり、extern "C"
の構文を使用したくありません。例えばAndroid ndkのC++関数オーバーロード
、C++コード:
void Java_com_mathlib_Math_add(JNIEnv *env, jobject, jintArray a, jintArray b, jintArray c) {
...
}
void Java_com_mathlib_Math_add(JNIEnv *env, jobject, jfloatArray a, jfloatArray b, jfloatArray c) {
...
}
Javaコード:
public class Math {
public native void add(int[] a, int[] b, int[] c);
public native void add(float[] a, float[] b, float[] c);
}
そして、私はこのようなJavaコードでネイティブ実装を使用します。
float[] a = {0};
float[] b = {1};
float[] c = new float[1];
new Math().add(a, b, c);
しかし、もし上記のコードをデバイスで実行すると、エラーが発生します。void com.mathlib.Math.adの実装が見つかりませんd(float []、float []、float [])。
IDEはAndroidスタジオです。コードに何が問題なのですか?
おそらく関連:https://developer.android.com/training/articles/perf-jni.html#faq_ULE –
おそらく:http://stackoverflow.com/questions/4031281/what-is-the-correct- way-to-write-native-method-signatures-in-android-ndk –
これはうまくいく、ありがとう。 –