我已經在我的應用程序的JNI文件夾中編寫了C++文件。我正在使用Windows系統與NDK和Cygwin 1.7。
我想重申Cygwin中可用的CURL庫。
如何在Android中創建JNI應用程序時引用外部.h(庫/頭文件)文件?
我已經創建了一個組合的Android和C++項目。但是我指的是CURL頭文件。當我構建項目時,我得到了致命錯誤:curl/curl.h:沒有這樣的文件或目錄問題。Android NDK引用JNI中的外部庫
回答
請使用這個tutorial是不錯的一個。
將項目轉換爲C/C++原生項目後,請勿忘記更改此設置。
生成器設置,以構建命令
bash C:\tools\android-ndk-r8b-windows\android-ndk-r8b\ndk-build
這是我的NDK的路徑可以改變這個路徑相應的NDK路徑。
遵循以下步驟:
從Android項目轉換爲C/C++項目: 右擊你的項目名稱,進入「Android的工具」,然後單擊「添加原生支持」
添加路徑外部.h文件: 右鍵單擊您的項目名稱,轉到'屬性',在'C/C++ General'下,轉到'路徑和符號',在'包含'選項卡下,添加您的.h文件所在的文件夾是。請記住要添加到所有語言和配置。因爲你在Windows中,我認爲你需要將你的Build命令(它在項目屬性中的'C/C++ Build'部分)改爲「bash C:\ Development \ android-ndk- R8 \ NDK-build.cmd」
以下內容添加到您的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靶向。如果你沒有它,你自己建立它。
Cygwin中沒有curl.so文件。 ???我實際上在C++中爲測試創建了一個簡單的http請求項目,並且當時我鏈接了libcurl.a文件。 – MobiDev
@ 256你說得對,你需要一個用於靜態鏈接的'libcurl.a',而不是.so – hirschhornsalz
當你拿到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
- 1. Android NDK java.lang.UnsatisfiedLinkError JNI
- 2. Android Studio調試NDK/JNI Mapbox庫
- 3. 在Android中使用C++ ndk/jni
- 4. 在Android NDK中使用具有外部依賴性的C庫
- 5. Android NDK使用JNI中c代碼的.so庫
- 6. 的Android NDK JNI調用LoadLibrary轟然
- 7. JNI,NDK和OpenCV
- 8. Android NDK/JNI:使用靜態庫構建共享庫
- 9. 用Android NDK問題調用JNI
- 10. 調試ndk Jni這是Android應用程序的一部分
- 11. android JNI加載mupdf(用NDK編譯?)
- 12. Android JNI/NDK應用上下文
- 13. Android NDK JNI調用libc函數
- 14. 在JNI使用jlongArray與Android NDK
- 15. JNI/Android NDK - 維護一個全局對象引用
- 16. 如何從外部庫引用android類
- 17. Android外部庫引用和NoClassDefFoundError
- 18. 引用外部Java和Android庫
- 19. NDK,JNI和libcurl
- 20. 如何使用Android Studio + Gradle + NDK構建外部C++庫?
- 21. 將CMake和ndk-build外部庫集成到Android Studio項目中
- 22. 使用JNI將大型C++庫編譯爲Android NDK -makefile問題
- 23. Android NDK:處理消息的JNI「主」?
- 24. Android - NDK共享庫提取與nm/objdump相關的JNI鉤子
- 25. 在Android NDK中使用SWIG和JNI實現CMU pocketsphinx android演示
- 26. HELLO-JNI NDK樣本 - NDK,構建失敗
- 27. 混合Android外部JAR和JNI狂野
- 28. 如何在Eclipse中的Android庫項目中引用外部jar
- 29. Android NDK JNI二進制代碼?
- 30. Android NDK JNI數組參考表溢出
我忘了提,我已經創建了一個組合的Android和C++項目。您建議的教程有助於創建簡單的JNI應用程序。但是我指的是CURL頭文件。當我構建項目時,我得到**致命錯誤:curl/curl.h:沒有這樣的文件或目錄**問題。 – MobiDev