2012-11-21 86 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