Как связать libcurl в проекте dropbox djinni
Мне нужен libcurl, чтобы сделать что-то в проекте dropbox djinni mx3; Но когда я создаю libmx3_android.so, тогда показываю это сообщение об ошибке: "неопределенная ссылка на" curl_easy_init ""...... Потому что я не могу связать libcurl.a с этим проектом.
для Android JNI, я нахожу какое-то решение может решить ее; То есть на eidt Android.mk
include $(CLEAR_VARS)
LOCAL_MODULE:= libcurl
LOCAL_SRC_FILES := libcurl.a
LOCAL_EXPORT_C_INCLUDES := /* put the path to the Curl headers here */
include $(PREBUILT_STATIC_LIBRARY)
но в этих проектах файл.mk будет воссоздан с помощью mx3.gyp. Как отредактировать mx3.gyp, чтобы создать этот файл.mk?
Спасибо.
2 ответа
Прежде всего, вам понадобится файл.a, скомпилированный для всех платформ. Вы можете найти его здесь https://github.com/gcesarmza/curl-android-ios или скомпилировать себя. Тогда вам также нужно будет добавить в качестве зависимости
"targets": [
{
"target_name": "libapplication_jni",
"type": "shared_library",
"dependencies": [
"../support-lib/support_lib.gyp:djinni_jni",
],
"libraries": ["libcurl.a",],
"ldflags": [ "-llog", "-lz", "-Wl,--build-id,--gc-sections,--exclude-libs,ALL" ],
"sources": [
"../support-lib/jni/djinni_main.cpp",
"<!@(python glob.py generated-src/jni '*.cpp')",
"<!@(python glob.py handwritten-src/cpp '*.cpp')",
],
"include_dirs": [
"../deps/include",
"generated-src/jni",
"generated-src/cpp",
"handwritten-src/jni",
"handwritten-src/cpp",
],
},
],
Поместите ваши файлы curl в каталог deps / include Наконец, поместите это в начале вашего файла Android.mk
LOCAL_PATH:= $(call my-dir)
#ARM optimizations
ifeq ($(TARGET_ARCH),arm)
PLATFORM_TARGET_ARCH := armeabi
endif
ifeq ($(TARGET_ARCH),arm64)
PLATFORM_TARGET_ARCH := arm64-v8a
endif
#x86 optimizations
ifeq ($(TARGET_ARCH),x86)
PLATFORM_TARGET_ARCH := x86
endif
ifeq ($(TARGET_ARCH),x86_64)
PLATFORM_TARGET_ARCH := x86_64
endif
#MIPS optimizations
ifeq ($(TARGET_ARCH),mips)
PLATFORM_TARGET_ARCH := mips
endif
ifeq ($(TARGET_ARCH),mips64)
PLATFORM_TARGET_ARCH := mips64
endif
include $(CLEAR_VARS)
LOCAL_MODULE:= libcurl
LOCAL_SRC_FILES := /djinni/mobile/deps/prebuilt/android/$(PLATFORM_TARGET_ARCH)/libcurl.a
LOCAL_EXPORT_C_INCLUDES := /djinni/mobile/deps/include
include $(PREBUILT_STATIC_LIBRARY)
Я надеюсь, что это помогает. Спасибо
'ldflags': [ '-L$(LOCAL_PATH)/deps/curl', '-L$(LOCAL_PATH)/deps/zlib', '-llog', '-lcurl', '-lz'],