我正在尝试构建freeimage并将其链接到android项目。我很接近,但我被该库中的一些链接器错误绊倒了。
我正在使用此回购:
https://github.com/jamcar23/FreeImage-Android/blob/master/jni/freeimage/Android.mk
Freeimage使用内部NDK库“cpufeatures”来使用xeon芯片组功能。在项目的“android”中。mk',有一个对cpufeatures库的引用:
LOCAL_STATIC_LIBRARIES := cpufeatures
而静态链接到此库的my library,也在该项目的android中的LOCAL\u STATIC\u LIBRARIES语句中包含cpufeatures。mk:
LOCAL_STATIC_LIBRARIES := tinyxml freetype2 bullet freeimage cpufeatures
也在我的android中。mk,我链接freeimage如下:
#####FREEIMAGE_LIBRARY_DECLARATION##########
include $(CLEAR_VARS)
LOCAL_PATH = $(TPLIBROOT)/FreeImage-Android
LOCAL_MODULE := freeimage
LOCAL_EXPORT_C_INCLUDES := include
LOCAL_SRC_FILES := obj/local/$(TARGET_ARCH_ABI)/libFreeImage.a
include $(PREBUILT_STATIC_LIBRARY)
###############################################
注意到我之前关于NDK的一个问题,应该考虑特定的架构(我已经使用所有可用的架构构建了freeimage)
freeimage。a和。因此,库似乎构建得很好,但在构建时需要链接到我的库。所以,我得到了这个错误:
[armeabi-v7a] SharedLibrary : libAnthracite.so
jni/freeimage/Source/LibWebP/./src/dsp/dsp.cpu.c:108: error: undefined reference to 'android_getCpuFamily'
jni/freeimage/Source/LibWebP/./src/dsp/dsp.cpu.c:109: error: undefined reference to 'android_getCpuFeatures'
jni/freeimage/Source/LibWebP/./src/dsp/dsp.dec.c:745: error: undefined reference to 'VP8DspInitNEON'
这很奇怪,因为两个库都链接CPuffeatures,所以它真的应该存在。
我宣布
APP_PLATFORM := android-14
APP_STL := gnustl_static
在应用程序中。两个项目的mk文件。
此外,我还尝试将“LOCAL\u STATIC\u LIBRARIES”放置在文件中的不同位置,并以不同的顺序链接库,尽管这只是猜测。
有人知道这些链接器错误的原因吗?