Компиляция libharu с Android NDK - PullRequest
1 голос
/ 12 августа 2011

Я пытаюсь скомпилировать libharu для Android. В моей папке jni есть:

  • / jni / lpng154 / со всеми источниками и включаемыми файлами для libpng;
  • / jni / libharu-2.2.1 / со всеми источниками и файлами для libharu

Это мой Android.mk (в папке / jni / ). У 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-build не может найти png.h ... как я могу помочь компилятору найти заголовок?

Если в моем Android.mk я добавлю флаг:

LOCAL_CFLAGS    := -DLIBHPDF_HAVE_NOPNGLIB

перед двумя строками:

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

и запустите ndk-build все скомпилируется нормально ... но я пропущу встраивание png в libharu.

Спасибо всем вам.

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

, поскольку вы пропустили файл "pnglibconf.h", вы можете найти его в lpng / scripts / pnglibconf.h.prebuilt, просто переименуйте pnglibconf.h.prebuilt в pnglibconf.h , и добавьте в папку lpng.Вам также нужно изменить файл: hpdf_image_png.c, добавьте эту строку: #include pnginfo.h после #include png.h.вот и все, я верю, что ты можешь добиться успеха.

1 голос
/ 02 сентября 2011

В libharu есть ошибка при компиляции с libpng 1.5.

Вы можете применить этот патч: https://github.com/tony2001/libharu/commit/e5bf8b01f6c3d5e3fe0e26ac5345e0da10c03934

0 голосов
/ 05 сентября 2013

Я использую ответ от Jimtoner.Это почти правильно.Но в моей ситуации (lpng 1.6.3) мне также нужно изменить файл: hpdf_image_png.c, добавить #include после #includeИ это удается!

...