#android #linker-errors #android-ndk #freeimage
#Android #компоновщик-ошибки #android-ndk #freeimage
Вопрос:
Я пытаюсь статически связать сборку libfreeimage.a с открытыми фреймворками для Android NDK (используя образец native-activity в качестве шаблона).
Когда я компилирую и связываю свой проект, я получаю множество ошибок компоновщика в соответствии с:
../../../lib/ndk/armeabi-v7a/libfreeimage.a(ImfTimeCodeAttribute.o): In function global constructors keyed to ImfTimeCodeAttribute.cpp':
std::ios_base::Init::Init()'
ImfTimeCodeAttribute.cpp:(.text 0x28): undefined reference to
Я полагаю, что это проблема с областью видимости, которую можно исправить, либо добавив пространство имен в код, либо используя g поверх gcc. Я думал, что -lstdc решит проблему, но этого не произошло.
Любая помощь была бы высоко оценена.
Android.mk:
LOCAL_PATH := $(call my-dir)/tmp
include $(CLEAR_VARS)
LOCAL_MODULE := androidapp
LOCAL_CFLAGS := -DFREEIMAGE_LIB
-DANDROID_NDK
-DDISABLE_IMPORTGL
-mfpu=vfp -mfloat-abi=softfp
-ffast-math -O3 -DFPM_ARM
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM -lstdc -ldl
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_LDLIBS = ../../../lib/ndk/armeabi-v7a/libfreeimage.a
LOCAL_ARM_MODE := arm
SRC-FILES := $(wildcard tmp/*.c*)
SRC-FILES := $(SRC-FILES:tmp/%=%)
LOCAL_SRC_FILES = $(SRC-FILES)
APP_OPTIM := release
APP_ABI := armeabi-v7a
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
Комментарии:
1. Удалось ли вам добавить ссылку на freeimage? Если да, то каким образом? Любая помощь была бы высоко оценена
Ответ №1:
Наконец-то разобрался с этим — для всех, у кого такая же проблема, исправление заключается в добавлении модуля для библиотеки, а затем включении библиотеки:
LOCAL_PATH := $(call my-dir)/tmp
include $(CLEAR_VARS)
LOCAL_MODULE := freeimage
LOCAL_SRC_FILES := ../../../../lib/ndk/armeabi-v7a/libfreeimage.a
LOCAL_EXPORT_C_INCLUDES := ../../../../lib/inc
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := androidapp
LOCAL_CFLAGS := -DFREEIMAGE_LIB
-DANDROID_NDK
-DDISABLE_IMPORTGL
-mfpu=vfp -mfloat-abi=softfp
-ffast-math -O3 -DFPM_ARM
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM -ldl -lstdc
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_STATIC_LIBRARIES = freeimage
LOCAL_ARM_MODE := arm
SRC-FILES := $(wildcard tmp/*.c*)
SRC-FILES := $(SRC-FILES:tmp/%=%)
LOCAL_SRC_FILES = $(SRC-FILES)
APP_OPTIM := release
APP_ABI := armeabi-v7a
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
Комментарии:
1. У меня точно такая же проблема, за исключением того, что ваше решение не помогло. Вы сделали что-нибудь еще, чтобы исправить эту проблему?
2. Удалось ли вам добавить ссылку на freeimage? Если да, то каким образом?