私はjniを初めて使用し、簡単なネイティブメソッドを実装するためのチュートリアルを行っていましたが、満足できないリンクエラーが発生します。私の知る限り、私はチュートリアルの手順を正確に実行しました。私を助けてください。
Javaラッパーコードは次のとおりです。
package com.cookbook.jni;
public class SquaredWrapper {
// Declare native method (and make it public to expose it directly)
public static native int squared(int base);
// Provide additional functionality, that "extends" the native method
public static int to4(int base)
{
int sq = squared(base);
return squared(sq);
}
// Load library
static {
System.loadLibrary("squared");
}
}
Android.mkファイルは次のようになります。
LOCAL_PATH:= $(my-dirを呼び出す)
$(CLEAR_VARS)を含める
LOCAL_MODULE:=平方LOCAL_SRC_FILES:=平方c
$(BUILD_SHARED_LIBRARY)を含める
私の.cファイルは次のようになります。
#include "squared.h"
#include <jni.h>
JNIEXPORT jint JNICALL Java_org_edwards_1research_demo_jni_SquaredWrapper_squared
(JNIEnv * je, jclass jc, jint base)
{
return (base*base);
}
そして、これが私の.hファイルの外観です。
enter code here/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_cookbook_jni_SquaredWrapper */
#ifndef _Included_com_cookbook_jni_SquaredWrapper
#define _Included_com_cookbook_jni_SquaredWrapper
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_cookbook_jni_SquaredWrapper
* Method: squared
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_com_cookbook_jni_SquaredWrapper_squared
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif