`
天天向上1989
  • 浏览: 412052 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

移植libharu至android

ndk 
阅读更多

 NDK编译

开始一直还天真的以为在桌面下编好的/usr/local/libhpdf.so可以直接用,后来才意识到要用NDK重新编~.~

 

步骤:

项目路径/jni下有两个文件夹:

libharu 和 lpng163 其中包含了 所有对应的src 和 include文件

还有haru 自带的例子 font_demo.cpp

 

针对: lpng163

 

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 \
    pngtest.c \
    pngwio.c \
    pngwrite.c \
    pngwtran.c \
    pngwutil.c

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

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_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 

LOCAL_C_INCLUDES := \
    $(LOCAL_PATH)/libharu/include \
    $(LOCAL_PATH)/libharu/src \
    $(LOCAL_PATH)/lpng163 
    
LOCAL_LDLIBS    := -lz  -lm
LOCAL_MODULE    := haru
LOCAL_SRC_FILES := $(sources:%=libharu/src/%)

LOCAL_STATIC_LIBRARIES := z png

include $(BUILD_SHARED_LIBRARY)

 

 

最后就是font_demo了

 

 

include $(CLEAR_VARS) 
LOCAL_MODULE    := haru_font
LOCAL_SRC_FILES := font_demo.cpp
LOCAL_C_INCLUDES :=  $(LOCAL_PATH)/libharu/include
LOCAL_CPPFLAGS += -fexceptions
LOCAL_STATIC_LIBRARIES := z png haru
include $(BUILD_SHARED_LIBRARY)

 

 

如果只是这样,会报错

error: dereferencing pointer to incomplete type

 

需要

1) 缺少 pnglibconf.h ,这个文件在png/scripts/pnglibconf.h.prebuilt ,拷贝出来,改名为pnglibconf.h

2)增加 hpdf_image_png.c 的头文件, 在#include <png.h> 后增加

#include <pngstruct.h>
#include <pnginfo.h>

 

即可成功!

 

分享到:
评论
2 楼 jj_zerogra 2013-11-18  
jj_zerogra 写道
请问这个工程结构是什么样的?我按照你的文章实现的编译.so库总是失败,请不吝赐教,谢谢。

我编译的结果总是报如下系列错误:
xxx in function HPDF_LoadRawImageFromMem:jni/../jni/libharu\../libharu/src/hpdf_doc.c:1697: error: undefined reference to 'HPDF_Image_LoadRaw1BitImageFromMem'
error: undefined reference to 'HPDF_NameDict_New'
in function HPDF_AttachFile:jni/../jni/libharu\../libharu/src/hpdf_doc.c:1953: error: undefined reference to 'HPDF_NameTree_New'
1 楼 jj_zerogra 2013-11-18  
请问这个工程结构是什么样的?我按照你的文章实现的编译.so库总是失败,请不吝赐教,谢谢。

相关推荐

Global site tag (gtag.js) - Google Analytics