最近在研究如何在android上写c代码,对ndk有一些体会,列出一些困扰我多时的问题,以便以后注意
假设我将所有的.h .cpp文件都放入jni下一个叫algorithm的文件夹
(1)在jni下需要写两个文件:Android.mk和XXX.cpp
后一个可以通过类似于javah -jni com.jwj.Core(包名+类名)来生成,生成后是个.h文件,实现里面的函数,并将其改为诸如interface.cpp
前一个的内容诸如:
TOP_LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)
LOCAL_PATH := $(TOP_LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := core
LOCAL_C_INCLUDES := /home/jwj/software/OpenCV_245/sdk/native/jni/include
LOCAL_SRC_FILES := interface.cpp
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -lz
LOCAL_STATIC_LIBRARIES = algorithm
include $(BUILD_SHARED_LIBRARY)
第二行容易漏,它是说要便利子目录下的Android.mk文件,不加的话,会报:
LOCAL_C_INCLUDES是指示opencv的目录在哪,所有Android.mk文件都要加,否则会报:
opencv