我在我的应用程序的 JNI 文件夹中编写了C ++文件。我正在使用 Windows 系统 NDK 和 Cygwin 1.7 。
我想要在Cygwin中使用CURL库。
在Android中创建JNI应用程序时如何引用外部.h(库/头文件)?
我创建了一个组合的Android和C ++项目。但我指的是CURL头文件。当我构建项目时,我得到致命错误:curl / curl.h:没有这样的文件或目录问题。
答案 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