android zbar编译,zbar android sdk在CentOS 7下的编译和使用

环境:CentOS 7+NDK 20.0.5594570+libiconv-1.14

下载

编译libiconv-1.14

1.执行./configure

2.执行make

报错,提示 error: ‘gets’ undeclared here (not in a function)

_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

c93493713323550a80c37c7e54b12976.png

解决办法:cd srclibsed -i-e '/gets is a security/d' ./stdio.in.h

编译zbar

1.解压ZBar-master.zip,将刚才编译好的libiconv-1.14文件夹,java/zbarjni.c文件,zbar文件夹,include文件夹复制到android/jni目录下,

最后的目录结构如下:

4bd9797a89aa029530045aea66e69b57.png

2.修改android/AndroidManifest.xml文件,修改后的文件如下:

3.修改android/project.properties,修改target值为系统支持的最低版本,如android-19

3d1e09e5f55df4d5440ad4a12d4ed88e.png

4.修改Android.mk,如下:

#

# Android NDK makefile

#

# build- /ndk-build ICONV_SRC=# clean- /ndk-build clean

#

MY_LOCAL_PATH := $(call my-dir)

ICONV_SRC := $(MY_LOCAL_PATH)/libiconv-1.14# libiconv

include $(CLEAR_VARS)

LOCAL_PATH :=$(ICONV_SRC)

LOCAL_MODULE :=libiconv

LOCAL_CFLAGS :=\-Wno-multichar \-D_ANDROID \-DLIBDIR="c"\-DBUILDING_LIBICONV \-DBUILDING_LIBCHARSET \-DIN_LIBRARY

LOCAL_SRC_FILES :=\

$(ICONV_SRC)/lib/iconv.c \

$(ICONV_SRC)/libcharset/lib/localcharset.c \

$(ICONV_SRC)/lib/relocatable.c

LOCAL_C_INCLUDES :=\

$(ICONV_SRC)/include \

$(ICONV_SRC)/libcharset \

$(ICONV_SRC)/libcharset/include

include $(BUILD_SHARED_LIBRARY)

LOCAL_LDLIBS := -llog -lcharset

# libzbarjni

include $(CLEAR_VARS)

LOCAL_PATH :=$(MY_LOCAL_PATH)

LOCAL_MODULE :=zbarjni

LOCAL_SRC_FILES :=zbarjni.c \

zbar/img_scanner.c \

zbar/decoder.c \

zbar/image.c \

zbar/symbol.c \

zbar/convert.c \

zbar/config.c \

zbar/scanner.c \

zbar/error.c \

zbar/refcnt.c \

zbar/video.c \

zbar/video/null.c \

zbar/decoder/code128.c \

zbar/decoder/code39.c \

zbar/decoder/code93.c \

zbar/decoder/codabar.c \

zbar/decoder/databar.c \

zbar/decoder/ean.c \

zbar/decoder/i25.c \

zbar/decoder/qr_finder.c \

zbar/qrcode/bch15_5.c \

zbar/qrcode/binarize.c \

zbar/qrcode/isaac.c \

zbar/qrcode/qrdec.c \

zbar/qrcode/qrdectxt.c \

zbar/qrcode/rs.c \

zbar/qrcode/util.c

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include \

$(LOCAL_PATH)/zbar \

$(ICONV_SRC)/include

LOCAL_SHARED_LIBRARIES :=libiconv

include $(BUILD_SHARED_LIBRARY)

5.修改Application.mk,如下:

APP_ABI := armeabi-v7a

6.切换到android/jni目录下,执行ndk-build命令

报错,如下:

e80e4b6f8471954e9632e99b3fdcb49b.png

解决办法:

修改libiconv-1.14/libcharset/config.h第14行,修改后的内容如下:#define HAVE_LANGINFO_CODESET 0

7446b4c143b4f7e9b83d6832b185c022.png

报错,如下:

0c681544ca43caee5a6928cc92ba8d60.png

解决办法:

修改文件libiconv-1.14/libcharset/lib/localcharset.c文件中函数get_charset_aliases (void),搜索:int c;把该变量定义放到该函数的开始处

993839bb92c53751a6bce8b045480723.png

继续编译,大功告成,在android/libs/armeabi-v7a目录下就可以看到生成的文件了

8f840b841af94453658101ccb7b7bd1f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值