嗨,我需要在我的本机代码中使用预构建的库,所以我将库放在 ndk/samples/native-activity 中的示例之后。下面是结构。请有人帮我解决这个错误,找不到 dsplink.h。提前致谢 :)
问问题
2566 次
4 回答
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
于 2012-06-19T07:51:18.297 回答
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
帮助链接器找到文件。
于 2012-06-17T14:16:24.283 回答
0
libmath-prebuilt.so 是一个预建库,其中包含一些供 buyya_read.c 使用的功能。首先使用 ndk-build 生成 libmath-prebuilt.so 并保存在 jni 文件夹中,buyya_read.c 保存在 elcipse 中的项目中。
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)
于 2016-06-22T07:01:05.417 回答
-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
于 2012-06-15T08:47:49.180 回答