문제

NDK 빌드를 수행하려고 할 때 다음과 같은 오류가 발생했습니다 ... 어떤 사람이 나를 도울 수 있습니까?

lmImf/ImfHuf.cpp:133: undefined reference to `__cxa_throw'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::invalidTableEntry()':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:141: undefined reference to `__cxa_allocate_exception'
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:141: undefined reference to `__cxa_throw'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::tooMuchData()':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:93: undefined reference to `__cxa_allocate_exception'
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:93: undefined reference to `__cxa_throw'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::invalidCode()':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:109: undefined reference to `__cxa_allocate_exception'
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:109: undefined reference to `__cxa_throw'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `invalidTableSize':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:117: undefined reference to `__cxa_allocate_exception'
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:117: undefined reference to `__cxa_throw'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `invalidNBits':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:85: undefined reference to `__cxa_allocate_exception'
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:85: undefined reference to `__cxa_throw'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `~AutoArray':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/IlmImf/ImfAutoArray.h:61: undefined reference to `__cxa_end_cleanup'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::hufUncompress(char const*, int, unsigned short*, int)':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:1076: undefined reference to `__cxa_begin_catch'
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:1079: undefined reference to `__cxa_rethrow'
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:1076: undefined reference to `__cxa_end_catch'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o):(.ARM.extab.text._ZN3Imf13hufUncompressEPKciPti+0x0): undefined reference to `__gxx_personality_v0'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `~AutoArray':
    D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/IlmImf/ImfAutoArray.h:61: undefined reference to `__cxa_end_cleanup'
    ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o):(.ARM.extab.text._ZN3Imf11hufCompressEPKtiPc+0x0): undefined reference to `__gxx_personality_v0'
    /home/flock/ANDROID/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a(unwind-arm.o): In function `__gnu_unwind_pr_common':
    /i/ndk-andrewhsieh/src.1-with-cherrypicks//build/../gcc/gcc-4.4.3/libgcc/../gcc/config/arm/unwind-arm.c:1237: undefined reference to `__cxa_call_unexpected'
    collect2: ld returned 1 exit status
.

My Application.mk

APP_OPTIM := release
APP_PLATFORM := android-8
APP_STL := gnustl_static
APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -DANDROID
APP_ABI := armeabi-v7a
.

및 my android.mk

 LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE:= freeimage
    LOCAL_SRC_FILES :=libfreeimage.a
    APP_STL := gnustl_static
    include $(PREBUILT_STATIC_LIBRARY)

    include $(CLEAR_VARS)
    LOCAL_MODULE:= imageprocessing
    LOCAL_SRC_FILES:= imageprocessing.c
    LOCAL_STATIC_LIBRARIES = freeimage
    LOCAL_EXPORT_C_INCLUDES := freeimage.h
    LOCAL_LDLIBS:= -lm -llog -ljnigraphics
    APP_STL := gnustl_static
    include $(BUILD_SHARED_LIBRARY)
.

도움이 되었습니까?

해결책

이 Per Application.mk에 추가 :

APP_STL := gnustl_static
APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions
.

FreeImage가 응용 프로그램보다 다른 런타임으로 빌드되는 것 같습니다.

다른 팁

app_stl := stlport_static을 원하지 않으셨습니까?내가 "__cxa_end_catch"를 위해 gnustl_static (ndk에서 깨진 것으로 밝혀 졌는가)에 대한 STLPort에 대한 필요성을 제안하는 "__cxa_end_catch / cxx-stl / gabi ++ / cxx-stl / gabi ++ / ...) btw)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top