Android アプリケーション サンプルで使用される共有ライブラリを構築する必要があります。この共有ライブラリは、以前の静的ライブラリに含まれているメソッドを使用する必要があります...
私は2つのプロジェクトを持っています:
-- C++ プロジェクト(NDK を使用してスタティック ライブラリ .a をビルドするために使用)。
-- Android ライブラリ; JNIインターフェース付き。
私はこのチュートリアルに従いました: http://tariqzubairy.wordpress.com/2012/03/12/use-of-prebuild-static-library-compiled-with-android-toolchain/
私の Android ライブラリ プロジェクトの階層は次のとおりです。
プロジェクトルート
- ソース
- じに
- 含む
- myHeader.hpp
- prebuid (.a ライブラリを含む)
- mylib.a
- jni.cpp
- Android.mk
- 含む
myHeader.hpp ファイル:
char* myMethod(int a, int b);
jni.cpp ファイル:
#include <jni.h>
#include <string.h>
#include <stdio.h>
#include "include/myHeader.hpp"
extern "C"
{
jstring Java_my_package_myMethod(JNIEnv* env, jobject obj, jint a, jint b);
}
...
アンドロイドメイクファイル:
LOCAL_PATH := $(call my-dir)
#Build module for static library
include $(CLEAR_VARS)
LOCAL_MODULE := my_static_lib
LOCAL_SRC_FILES := prebuild/mylib.a
LOCAL_EXPORT_C_INCLUDES := include/myHeader.hpp
include $(PREBUILT_STATIC_LIBRARY)
#Build module for jni wrapper
include $(CLEAR_VARS)
LOCAL_MODULE := jni_wrapper_lib
LOCAL_SRC_FILES := jni.cpp
LOCAL_STATIC_LIBRARIES := my_static_lib
include $(BUILD_SHARED_LIBRARY)
JNI プロジェクトをビルドしようとすると、次のエラーが発生しました: "myMethod(int a, int b)" への未定義参照
このエラーが発生した理由を説明してもらえますか?
お時間をいただきありがとうございます。