Android NDK引用JNI中的外部库

时间:2012-11-21 12:25:18

标签: android c++ curl android-ndk java-native-interface

我在我的应用程序的 JNI 文件夹中编写了C ++文件。我正在使用 Windows 系统 NDK Cygwin 1.7
我想要在Cygwin中使用CURL库。

在Android中创建JNI应用程序时如何引用外部.h(库/头文件)?
我创建了一个组合的Android和C ++项目。但我指的是CURL头文件。当我构建项目时,我得到致命错误:curl / curl.h:没有这样的文件或目录问题。

4 个答案:

答案 0 :(得分:0)

请用tutorial这个很好。

将项目转换为C / C ++本机项目后,不要忘记更改此设置。

构建命令的构建器设置

bash C:\tools\android-ndk-r8b-windows\android-ndk-r8b\ndk-build

这是我的NDK路径,您可以根据NDK路径更改此路径。

答案 1 :(得分:0)

请按照以下步骤操作:

从Android项目转换为C / C ++项目: 右键单击您的项目名称,转到“Android工具”,然后单击“添加原生支持”

添加外部.h文件的路径: 右键单击项目名称,转到“属性”,在“C / C ++常规”下,转到“路径和符号”,在“包含”选项卡下,添加.h文件所在的文件夹。如果被要求,请记住添加到所有语言和配置。

另外,既然你在Windows中,我认为你需要将你的Build命令(在项目属性的'C / C ++ Build'部分中)改为“bash C:\ Development \ android-ndk-r8” \ NDK-build.cmd“

答案 2 :(得分:0)

将以下内容添加到Android.mk

LOCAL_CFLAGS += -I$/PATH/TO/YOUR/curl.h
LOCAL_LDLIBS += -L$/PATH/TO/YOUR/libcurl.a.for.android -lcurl

你在cygwin中安装的libcurl.a不适用于android,你需要一个针对android的版本。如果你没有,请自己构建。

答案 3 :(得分:0)

当您获得libcurl.a文件时,不要忘记复制curl的headers文件夹(从Cygwin进入 usr / include / curl )并将此文件夹添加到JNI文件夹中你的项目,所以它在编译时知道标题。

这也意味着您的 Android.mk

用于libcurl库

LOCAL_SRC_FILES := libcurl.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/curl

和您的C ++文件

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/curl
LOCAL_WHOLE_STATIC_LIBRARIES := libcurl
相关问题