2012-11-21 62 views
1

我已经在我的应用程序的JNI文件夹中编写了C++文件。我正在使用Windows系统与NDKCygwin 1.7
我想重申Cygwin中可用的CURL库。

如何在Android中创建JNI应用程序时引用外部.h(库/头文件)文件?

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

回答

0

请使用这个tutorial是不错的一个。

将项目转换为C/C++原生项目后,请勿忘记更改此设置。

生成器设置,以构建命令

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

这是我的NDK的路径可以改变这个路径相应的NDK路径。

+0

我忘了提,我已经创建了一个组合的Android和C++项目。您建议的教程有助于创建简单的JNI应用程序。但是我指的是CURL头文件。当我构建项目时,我得到**致命错误:curl/curl.h:没有这样的文件或目录**问题。 – MobiDev

0

遵循以下步骤:

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

添加路径外部.h文件: 右键单击您的项目名称,转到'属性',在'C/C++ General'下,转到'路径和符号',在'包含'选项卡下,添加您的.h文件所在的文件夹是。请记住要添加到所有语言和配置。因为你在Windows中,我认为你需要将你的Build命令(它在项目属性中的'C/C++ Build'部分)改为“bash C:\ Development \ android-ndk- R8 \ NDK-build.cmd”

+0

我已更新我的问题。 **添加本机支持**功能有什么作用? – MobiDev

+1

添加本地支持创建一个组合的android和c + +项目。既然你已经这样做了,那就跳过这一步。 – Kishore

0

以下内容添加到您的Android.mk

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

libcurl.a中已安装的cygwin不是Android的使用,你需要一个版本的Android靶向。如果你没有它,你自己建立它。

+0

Cygwin中没有curl.so文件。 ???我实际上在C++中为测试创建了一个简单的http请求项目,并且当时我链接了libcurl.a文件。 – MobiDev

+0

@ 256你说得对,你需要一个用于静态链接的'libcurl.a',而不是.so – hirschhornsalz

0

当你拿到libcurl.a文件,不要忘记拷贝卷曲的头文件夹(进入你的usr/include目录/卷曲从Cygwin的),并在此文件夹中的项目添加到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