こんにちは、ネイティブ コードでビルド済みのライブラリを使用する必要があるため、例に従ってライブラリを ndk/samples/native-activity に配置しています。以下が構造です。このエラーについて誰か助けてください。dsplink.h が見つかりません。前もって感謝します :)
4 に答える
ウラジミールは正しい軌道に乗っていたと思います。ただし、静的ライブラリは実行ごとに削除されるため、obj フォルダーに保持しないでください。代わりに、jni/modules/precompiled などを作成してそこに配置します...
あなたが持っているのは、プリコンパイルされた静的ライブラリです。それが .a ファイルです。最終的なバイナリになるように、コンパイル プロセスに追加することを意図しています。だからあなたが持っているべきものは次のとおりです:
#
# DSPLINK
#
include $(CLEAR_VARS)
LOCAL_MODULE := dsplink
LOCAL_SRC_FILES := [path-to-prebuilt-lib]/libdsplink.a
LOCAL_EXPORT_C_INCLUDES := [path-to-dsplink-headers-folder]
include $(PREBUILT_STATIC_LIBRARY)
また、プロジェクトのリンカーに含めることを忘れないでください..メイン共有ライブラリのこのセクションの下に、次の行を追加します。
LOCAL_STATIC_LIBRARIES := dsplink
Cファイルにはdsplink.hファイルが含まれています。LOCAL_C_INCLUDES
お持ちの場合は、このファイルへのフルパスを次のように追加する必要があります。
LOCAL_MODULE := jnihello
LOCAL_C_INCLUDES := $(LOCAL_PATH)/inlcudes
ちなみに、dsplink.aファイルが事前に作成されている場合は、 libs /フォルダーの外に置いておくと、make clean
削除されないので安全です。あなたは次のようなものを使うことができます
LOCAL_LDFLAGS += $(LOCAL_PATH)/prebuilt/dsplink.a
リンカがファイルを見つけるのを助けるため。
libmath-prebuilt.so は、buyya_read.c で使用されるいくつかの関数を含むビルド済みライブラリです。最初に ndk-build を使用して libmath-prebuilt.so を生成し、elcipse の ur プロジェクトで buyya_read.c が保持されている jni フォルダーに保持します。
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := math-prebuilt
LOCAL_SRC_FILES = libmath-prebuilt.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := buyya_read
LOCAL_SRC_FILES := buyya_read.c
LOCAL_LDLIBS := -llog
LOCAL_SHARED_LIBRARIES := math-prebuilt
include $(BUILD_SHARED_LIBRARY)
プロジェクトdsplink
の前に、Android.mk でビルド済みライブラリを定義する必要があります。jnihello
#
# DSPLINK
#
include $(CLEAR_VARS)
LOCAL_MODULE := dsplink
LOCAL_SRC_FILES := [path]/libs/armeabi/libdsplink.so
LOCAL_EXPORT_C_INCLUDES := [directory-with-dsplink.h-file]
include $(PREBUILT_STATIC_LIBRARY)
...
# jnihello