1

私は次のものを持っています:

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);
}
4

1 に答える 1