2011-08-12 10 views
1

私はlibharuをAndroid用にコンパイルしようとしています。私JNIフォルダでは私がしました:すべてのソースでlibharuをAndroid NDKでコンパイルする

  • /JNI/lpng154/とのlibpngのためのファイルが含まれます。
  • /jni/libharu-2.2.1/聖霊降臨祭のすべてのソースとlibharu
  • 用のファイルが含まれ

これは(/フォルダ/JNIで)私の Android.mkです。 libharuはlibpngに依存しているので、まずlibpngをコンパイルしています。

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

sources := png.c \ 
    pngerror.c \ 
    pngget.c \ 
    pngmem.c \ 
    pngpread.c \ 
    pngread.c \ 
    pngrio.c \ 
    pngrtran.c \ 
    pngrutil.c \ 
    pngset.c \ 
    pngtrans.c \ 
    pngwio.c \ 
    pngwrite.c \ 
    pngwtran.c \ 
    pngwutil.c 

LOCAL_C_INCLUDES := $(LOCAL_PATH)/lpng154 
LOCAL_MODULE  := png 
LOCAL_LDLIBS  := -lz 
LOCAL_SRC_FILES := $(sources:%=lpng154/%) 

include $(BUILD_STATIC_LIBRARY) 

次にlibharuをコンパイルします。

include $(CLEAR_VARS) 

sources := hpdf_annotation.c \ 
    hpdf_array.c \ 
    hpdf_binary.c \ 
    hpdf_boolean.c \ 
    hpdf_catalog.c \ 
    hpdf_destination.c \ 
    hpdf_dict.c \ 
    hpdf_doc.c \ 
    hpdf_doc_png.c \ 
    hpdf_encoder.c \ 
    hpdf_encoder_cns.c \ 
    hpdf_encoder_cnt.c \ 
    hpdf_encoder_jp.c \ 
    hpdf_encoder_kr.c \ 
    hpdf_encrypt.c \ 
    hpdf_encryptdict.c \ 
    hpdf_error.c \ 
    hpdf_ext_gstate.c \ 
    hpdf_font.c \ 
    hpdf_font_cid.c \ 
    hpdf_fontdef_base14.c \ 
    hpdf_fontdef.c \ 
    hpdf_fontdef_cid.c \ 
    hpdf_fontdef_cns.c \ 
    hpdf_fontdef_cnt.c \ 
    hpdf_fontdef_jp.c \ 
    hpdf_fontdef_kr.c \ 
    hpdf_fontdef_tt.c \ 
    hpdf_fontdef_type1.c \ 
    hpdf_font_tt.c \ 
    hpdf_font_type1.c \ 
    hpdf_gstate.c \ 
    hpdf_image.c \ 
    hpdf_image_png.c \ 
    hpdf_info.c \ 
    hpdf_list.c \ 
    hpdf_mmgr.c \ 
    hpdf_name.c \ 
    hpdf_namedict.c \ 
    hpdf_null.c \ 
    hpdf_number.c \ 
    hpdf_objects.c \ 
    hpdf_outline.c \ 
    hpdf_page_label.c \ 
    hpdf_page_operator.c \ 
    hpdf_pages.c \ 
    hpdf_real.c \ 
    hpdf_streams.c \ 
    hpdf_string.c \ 
    hpdf_u3d.c \ 
    hpdf_utils.c \ 
    hpdf_xref.c \ 
    hpdf_pdfa.c 

LOCAL_C_INCLUDES := \ 
    $(LOCAL_PATH)/lpng154 \ 
    $(LOCAL_PATH)/libharu-2.2.1/include \ 
    $(LOCAL_PATH)/libharu-2.2.1/src 

LOCAL_LDLIBS := -lz -lm 
LOCAL_MODULE := haru 
LOCAL_SRC_FILES := $(sources:%=libharu-2.2.1/src/%) 

LOCAL_STATIC_LIBRARIES := z png 

include $(BUILD_SHARED_LIBRARY) 

私は実行するとNDK-BUID *それらのような多くのエラーで次のファイル*のhpdf_image_png.cをコンパイルしようとしたとき、コンパイラが停止を:

.../src/hpdf_image_png.c: In function 'ReadPngData_Interlaced': 
.../src/hpdf_image_png.c:113: error: dereferencing pointer to incomplete type 
.../src/hpdf_image_png.c:118: error: dereferencing pointer to incomplete type 
.../src/hpdf_image_png.c:119: error: dereferencing pointer to incomplete type 
.../src/hpdf_image_png.c:129: error: dereferencing pointer to incomplete type 
... 
... 

私は見つけることができませんNDKビルドを推測png.h ...ヘッダを見つけるためにコンパイラを助けることができますか?

私Android.mkに私がフラグを追加した場合:

二列の前に
LOCAL_CFLAGS := -DLIBHPDF_HAVE_NOPNGLIB 

LOCAL_LDLIBS := -lz -lm 
LOCAL_MODULE := haru 
... 

とNDK-構築罰金コンパイルeverithingをを実行します...しかし、私はなりますlibharuに埋め込まれたPNGが欠けている。

ありがとうございます。

答えて

1

を、 だけpnglibconf.hの名前を変更.prebuiltをpnglibconf.hとし、lpngというフォルダに追加します。 また、ファイルhpdf_image_png.cを変更する必要があります。この行を追加します。#include png.hのあとに#include pnginfo.h それはすべて、私はあなたが成功できると信じています。

0

私はjimtonerの答えを使用します。 それはほぼ正しいです。しかし私の状況では(lpng 1.6.3)、hpdf_image_png.cというファイルも変更する必要があります。#includeの後に#includeを追加してください。 それは成功です!

関連する問題