嗨,我需要在我的本机代码中使用预构建的库,所以我将该库放在ndk / samples / native-activity中的示例之后。以下是结构。请有人帮我解决这个错误,找不到dsplink.h。在此先感谢:)
答案 0 :(得分:1)
我瘦弗拉基米尔走在正确的轨道上。 但是不要将静态库保留在obj文件夹中,因为每次运行都会删除它,而是创建一个jni / modules / precompiled或者其他东西并将其放在那里......
你拥有的是一个预编译的静态库。这就是.a文件。 它意味着将它添加到编译过程中,以便它将在最终的二进制文件中。 所以你应该拥有的是:
#
# DSPLINK
#
include $(CLEAR_VARS)
LOCAL_MODULE := dsplink
LOCAL_SRC_FILES := [path-to-prebuilt-lib]/libdsplink.a
LOCAL_EXPORT_C_INCLUDES := [path-to-dsplink-headers-folder]
include $(PREBUILT_STATIC_LIBRARY)
并且也不要忘记将它包含在项目中的链接器中。所以在主共享库中的这一部分下面添加以下行:
LOCAL_STATIC_LIBRARIES := dsplink
答案 1 :(得分:0)
您的C文件包含 dsplink.h 文件。如果您拥有它,则应在LOCAL_C_INCLUDES
中添加此文件的完整路径,例如
LOCAL_MODULE := jnihello
LOCAL_C_INCLUDES := $(LOCAL_PATH)/inlcudes
顺便说一句,如果 dsplink.a 文件已预先构建,那么您将安全地将其保留在 libs / 文件夹之外,以便 make clean
不会将其删除。你可以使用像
LOCAL_LDFLAGS += $(LOCAL_PATH)/prebuilt/dsplink.a
帮助链接器找到文件。
答案 2 :(得分:0)
libmath-prebuilt.so是一个预建的库,它有一些由buyya_read.c使用的函数。首先使用ndk-build生成libmath-prebuilt.so并保存在jni文件夹中,其中buyya_read.c保存在elcipse中的ur项目中。
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := math-prebuilt
LOCAL_SRC_FILES = libmath-prebuilt.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := buyya_read
LOCAL_SRC_FILES := buyya_read.c
LOCAL_LDLIBS := -llog
LOCAL_SHARED_LIBRARIES := math-prebuilt
include $(BUILD_SHARED_LIBRARY)
答案 3 :(得分:-1)
您应该在dsplink
项目之前在Android.mk中定义预建库jnihello
:
#
# DSPLINK
#
include $(CLEAR_VARS)
LOCAL_MODULE := dsplink
LOCAL_SRC_FILES := [path]/libs/armeabi/libdsplink.so
LOCAL_EXPORT_C_INCLUDES := [directory-with-dsplink.h-file]
include $(PREBUILT_STATIC_LIBRARY)
...
# jnihello