2016-05-24 11 views
0

私はいくつかの.aファイルを所有しており、ndk-buildを使って.soを生成したいと考えています。.aを.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) 

これらstepsを使用NDKビルドを使用します。

これは私にこのエラーを返すの.so生成しよう:

C:\Android\sdk\ndk-bundle\build\ndk-build.cmd clean Android NDK: LOCAL_MODULE definition in jni/Android.mk must not contain space
C:/Android/sdk/ndk-bundle/build//../build/core/build-shared-library.mk:23: *** Android NDK: Please correct error. Aborting . Stop.

Process finished with exit code 2

+0

なぜ共有ライブラリを構築しようとしているのですが、 'PREBUILT_STATIC_LIBRARY'を使用していますか? – Michael

+0

おっと、私のエラー...私はSHAREDに変更しましたが、SURFを使うためにlib opencv 3.1をどのように生成するかについてはまだ疑問があります。私はステップバイステップで、cmakコマンドでgithubコマンドを実行するだけで、この巨大なリスト ".a"を生成し、単一の ".so"に参加したいと考えています。 contrib SURFでこのlibを生成する方が簡単で正しいかどうかわかりません。 – VTR2015

答えて

1

LOCAL_MODULEが構築された最終の.soファイルの名前を指定します。あなたはその後、これを指定する必要があります

LOCAL_MODULE := nonfree_opencv_java3 

:あなたは、私はこの手動で行うことをお勧め連結名を希望の場合は

LOCAL_MODULE := nonfree 
LOCAL_MODULE += opencv_java3 

: NDKビルドはspace is introduced in the name when you concatenate the two stringsnonfreeopencv_java3ので、エラーを与えています.soファイルをJNI経由でロードすると

+0

返信ありがとう...このエラーが発生しました:C:¥Android¥sdk¥ndk-bundle¥build¥ndk-build.cmd clean C:/ Android/sdk/ndk-bundle/build //../ build /core/prebuilt-library.mk:28:***区切り記号がありません。やめる。 Android NDK:ERROR:jni/Android.mk:nonfree_opencv_java3:事前ビルドされたライブラリのLOCAL_SRC_FILESには、1つのアイテムのみが含まれている必要があります 終了コード2で処理が完了しました – VTR2015

関連する問題