私は次のものを持っています:
jniinterface.h
#include <jni.h>
extern "C" {
JNIEXPORT jdouble JNICALL Java_com_gleason_finance_JniLib_init(JNIEnv * env, jobject obj, jdouble SO, jdouble U, jdouble D, jdouble R);
};
jniinterface.cpp
#include "jniinterface.h"
JNIEXPORT jdouble JNICALL Java_com_gleason_finance_JniLib_init(JNIEnv * env, jobject obj, jdouble SO, jdouble U, jdouble D, jdouble R, jint N, jdouble K)
{
return 0.0;
}
しかし、これは以下を返します:
E/AndroidRuntime( 3638): java.lang.UnsatisfiedLinkError: Native method not found: com.me.finance.JniLib.init:(DDDDID)D
jniinterface.cpp を次のように変更すると、正常に動作します。
#include <jni.h>
extern "C" JNIEXPORT jdouble JNICALL Java_com_gleason_finance_JniLib_init(JNIEnv * env, jobject obj, jdouble SO, jdouble U, jdouble D, jdouble R, jint N, jdouble K)
{
return 0.0;
}
それはうまくいきます、私はC ++に慣れていないので、何か間違っていますか? ヘッダーを削除するだけですか?ヘッダーで機能しないのはなぜですか?
明らかにC++の問題であるため(Cの修正のため)、これが役立つ理由はわかりませんが、次のとおりです。
public class JniLib {
static {
System.loadLibrary("fin");
}
public static native double init(double SO, double U, double R, double D, int N, double k);
}