【发布时间】:2016-05-25 00:43:15
【问题描述】:
我拥有许多 .a 文件,并希望使用 ndk-build 生成 .so。
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := nonfree
LOCAL_MODULE += opencv_java3
LOCAL_SRC_FILES := \
libopencv_aruco.a \
libopencv_bgsegm.a \
libopencv_bioinspired.a \
libopencv_calib3d.a \
libopencv_ccalib.a \
libopencv_core.a \
libopencv_datasets.a \
libopencv_dnn.a \
libopencv_dpm.a \
libopencv_face.a \
libopencv_features2d.a \
libopencv_flann.a \
libopencv_fuzzy.a \
libopencv_highgui.a \
libopencv_imgcodecs.a \
libopencv_imgproc.a \
libopencv_line_descriptor.a \
libopencv_ml.a \
libopencv_objdetect.a \
libopencv_optflow.a \
libopencv_photo.a \
libopencv_plot.a \
libopencv_reg.a \
libopencv_rgbd.a \
libopencv_saliency.a \
libopencv_shape.a \
libopencv_stereo.a \
libopencv_stitching.a \
libopencv_structured_light.a \
libopencv_superres.a \
libopencv_surface_matching.a \
libopencv_text.a \
libopencv_tracking.a \
libopencv_ts.a \
libopencv_video.a \
libopencv_videoio.a \
libopencv_videostab.a \
libopencv_xfeatures2d.a \
libopencv_ximgproc.a \
libopencv_xobjdetect.a \
libopencv_xphoto.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
要使用 NDK 构建,请使用这些 steps。
当试图生成 .so 这返回我这个错误:
C:\Android\sdk\ndk-bundle\build\ndk-build.cmd 清理 Android NDK: jni/Android.mk 中的 LOCAL_MODULE 定义不能包含空格
C:/Android/sdk/ndk-bundle/build//../build/core/build-shared-library.mk:23: *** Android NDK:请更正错误。中止。停下来。进程以退出代码 2 结束
【问题讨论】:
-
如果您要构建共享库,为什么要使用
PREBUILT_STATIC_LIBRARY? -
糟糕,我的错误...我更改为 SHARED 但仍然对如何使用 contrib 生成 lib opencv 3.1 以使用 SURF 有疑问。我一步一步地跟着 github 用 cmak 命令生成了这个巨大的列表“.a”,并想加入一个“.so”。我不知道是否有更简单和正确的使用 contrib SURF 生成这个库。
标签: android c++ android-ndk