1

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)" への未定義参照

このエラーが発生した理由を説明してもらえますか?

お時間をいただきありがとうございます。

4

1 に答える 1

0

関連するドキュメントに手を置くことはできませんが、ファイルではなくフォルダーを指す必要があるように思えます。LOCAL_EXPORT_C_INCLUDES

LOCAL_EXPORT_C_INCLUDES := include

このフラグは通常の-ICFLAG と同等であるため、論理的に見えるでしょ-Iincludeう。-Iinclude/myHeader.hpp

これで問題が解決したかどうか教えてください!

于 2013-07-17T14:59:00.523 に答える