2

NDK を使用して、独自の C++ コードをコンパイルして正常に実行しています。Android に組み込まれている libpng ライブラリにアクセスする方法が見当たらないので、私の唯一の選択肢は、自分のバージョンをコンパイルしてそれを使用することです (代替案について知りたいと思います)。

現在、libpng を利用するようにコードを拡張しようとしています。コードをビルドする方法がわかりません。ドキュメントを読み、ニュースグループの質問と回答を調べましたが、問題を解決できません。

libpng をソース ツリーにコピーしました。libpng を静的ライブラリとしてコンパイルし、コードでこれを使用して libpng の関数にアクセスしようとしています。これまでのmakeファイルの内容は次のとおりです。

########## Directory layout ##########

jni/
  Android.mk
  mylib/
    Android.mk
    source files...
  libpng/
    Android.mk
    source files...

########## Top-level Android.mk ##########

LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/libpng/Android.mk
include $(LOCAL_PATH)/mylib/Android.mk

########## mylib Android.mk ##########

include $(CLEAR_VARS)

NDK_MODULE_PATH := $(LOCAL_PATH)

LOCAL_STATIC_LIBRARIES := libpng
LOCAL_C_INCLUDES :=  $(LOCAL_PATH)/libpng

LOCAL_LDLIBS := -llog
LOCAL_MODULE := mylib
LOCAL_CFLAGS := 

sources := mylib.cpp
LOCAL_SRC_FILES += $(sources:%=mylib/%)

include $(BUILD_SHARED_LIBRARY)
$(call import-module, libpng)

########## libpng Android.mk ##########

include $(CLEAR_VARS)

LOCAL_CFLAGS := 
LOCAL_MODULE := libpng

sources :=\
    png.c \ # etc.

LOCAL_SRC_FILES += $(sources:%=libpng/%)
LOCAL_LDLIBS := -lz
include $(BUILD_STATIC_LIBRARY)

mylib は、すべての libpng マテリアルを削除すると既にコンパイルされるコードです。libpng 自体も正常にコンパイルされます。コードと libpng コードを別々のディレクトリに保存し、最上位の make ファイルを使用してこれらをコンパイルしようとしていることに注意してください。

mylib をビルドしようとしたときに私が立ち往生している現在のエラー メッセージは次のとおりです。

インポート パス Android NDK でタグ 'libpng' を持つモジュールが見つかりません
: NDK_MODULE_PATH 変数が正しく定義されていますか?

NDK_MODULE_PATH を $(LOCAL_PATH) に設定しました。これは、ビルド プロセスが libpng/Android.mk を見つける必要があることを意味すると思いますが、そうではありません。誰でも助けることができますか?

4

1 に答える 1

3

LOCAL_MODULE := png代わりに試してみてくださいlibpng

于 2011-03-02T15:54:02.563 に答える