Android 包括预构建的静态库 < >我创建了一个静态C++库来进行测试。它只定义一个类,MyLibrary,以及构造函数MyLibrary::MyLibrary()。我在qtcreator中构建了它,得到了一个libMyLibrary.a文件,它是一个预构建的静态库

Android 包括预构建的静态库 < >我创建了一个静态C++库来进行测试。它只定义一个类,MyLibrary,以及构造函数MyLibrary::MyLibrary()。我在qtcreator中构建了它,得到了一个libMyLibrary.a文件,它是一个预构建的静态库,android,android-ndk,Android,Android Ndk,我想在Android项目中使用这个库(使用NDK)。因此,在一个正在工作的NDK测试项目中,我在jni的同一级别添加了一个名为inc的文件夹,在其中我放置了libMyLibrary.a及其相应的头mylibrary.h 我的Android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := MyLibrary LOCAL_SRC_FILES := ../inc/libMyLibrary.a

我想在Android项目中使用这个库(使用NDK)。因此,在一个正在工作的NDK测试项目中,我在
jni
的同一级别添加了一个名为
inc
的文件夹,在其中我放置了
libMyLibrary.a
及其相应的头
mylibrary.h

我的
Android.mk
如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := MyLibrary
LOCAL_SRC_FILES := ../inc/libMyLibrary.a

include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := helloJNI
LOCAL_SRC_FILES := mainActivity.cpp

LOCAL_C_INCLUDES += inc
LOCAL_STATIC_LIBRARIES := MyLibrary

LOCAL_LDLIBS    := -llog
include $(BUILD_SHARED_LIBRARY)
ndk build命令编译时没有任何错误。但是我的静态库显然没有链接(即它没有出现在
obj/local/armeabi/objs
中)

我已尝试将其包含在我的
mainActivity.cpp
文件中,但即使找到了标题(
mylibrary.h
),库也没有,我无法创建如下所示的对象:

MyLibrary test = MyLibrary();
我做错了什么?我已经阅读了数十个关于StackOverflow的类似问题,但我仍然不明白。

尝试使用以下方法:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := helloJNI
LOCAL_SRC_FILES := mainActivity.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/inc/
LOCAL_LDLIBS    := -llog -L$(LOCAL_PATH)/inc/ -lMyLibrary
include $(BUILD_SHARED_LIBRARY)

将libMyLibrary.a&mylibrary.h移动到jni/inc/libMyLibrary.a

好的,它编译时不会出错,就像以前一样。如何确保它链接到库?它也不会出现在obj/local/armeabi中……您应该检查libs\armeabi。共享库是在这里生成的吗?
libhelloJNI.so
是,但这并不能告诉我静态库是否已链接。。。请注意,
MyLibrary
没有在代码中的任何地方使用。我认为您可以使用工具打开库,并检查是否存在相关的API。例如,在Linux下,您可以使用命令“nm”。嘿,您提到了“qtcreator”。你制作了一个x86库,对吗?不是手臂。对于android,您必须构建一个arm库。您必须使用NDK来构建这个静态库,否则会出现兼容性问题