Android NDK:未定义的引用
Android NDK: undefined reference
我正在尝试使用 android 的 VTK 为 android 开发应用程序。
到目前为止,我已经编译了所有源代码,一切正常。
现在我被困在这里,一个未定义的引用错误是:
Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in /Users/lonnibesancon/Documents/workspace/TestNativecopy/AndroidManifest.xml
[armeabi-v7a] Compile++ thumb: ndk1 <= native.cxx
[armeabi-v7a] Compile thumb : android_native_app_glue <= android_native_app_glue.c
[armeabi-v7a] StaticLibrary : libandroid_native_app_glue.a
[armeabi-v7a] SharedLibrary : libndk1.so
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkRenderWindow::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkRenderer::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkAndroidRenderWindowInteractor::New()'
/Users/lonnibesancon/Documents/workspace/TestNativecopy/jni/native.cxx:61: error: undefined reference to 'vtkRenderWindowInteractor::SetRenderWindow(vtkRenderWindow*)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkSphereSource::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkPolyDataMapper::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkActor::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkConeSource::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkGlyph3D::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkGlyph3D.h:131: error: undefined reference to 'vtkGlyph3D::SetSourceConnection(int, vtkAlgorithmOutput*)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkPolyDataMapper::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkActor::New()'
/Users/lonnibesancon/Documents/workspace/TestNativecopy/jni/native.cxx:88: error: undefined reference to 'vtkRenderer::AddActor(vtkProp*)'
/Users/lonnibesancon/Documents/workspace/TestNativecopy/jni/native.cxx:89: error: undefined reference to 'vtkRenderer::AddActor(vtkProp*)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkDebugLeaksManager.h:39: error: undefined reference to 'vtkDebugLeaksManager::vtkDebugLeaksManager()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkDebugLeaksManager.h:39: error: undefined reference to 'vtkDebugLeaksManager::~vtkDebugLeaksManager()'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:190: error: undefined reference to 'AInputQueue_getEvent'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:192: error: undefined reference to 'AInputQueue_preDispatchEvent'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:197: error: undefined reference to 'AInputQueue_finishEvent'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:211: error: undefined reference to 'AConfiguration_new'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:212: error: undefined reference to 'AConfiguration_fromAssetManager'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:66: error: undefined reference to 'AConfiguration_getLanguage'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:67: error: undefined reference to 'AConfiguration_getCountry'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:223: error: undefined reference to 'ALooper_prepare'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:224: error: undefined reference to 'ALooper_addFd'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:179: error: undefined reference to 'AInputQueue_detachLooper'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:181: error: undefined reference to 'AConfiguration_delete'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:95: error: undefined reference to 'AInputQueue_detachLooper'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:100: error: undefined reference to 'AInputQueue_attachLooper'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:134: error: undefined reference to 'AConfiguration_fromAssetManager'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:66: error: undefined reference to 'AConfiguration_getLanguage'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:67: error: undefined reference to 'AConfiguration_getCountry'
collect2: error: ld returned 1 exit status
make: *** [/Users/lonnibesancon/Documents/workspace/TestNativecopy/obj/local/armeabi-v7a/libndk1.so] Error 1
我的 android.mk 文件的内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# VTK Libs
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkalglib-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkalglib-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonColor-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonColor-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonComputationalGeometry-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonComputationalGeometry-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonMath-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonMath-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonMisc-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonMisc-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonSystem-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonSystem-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonTransforms-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonTransforms-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkDICOMParser-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkDICOMParser-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkexpat-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkexpat-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersExtraction-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersExtraction-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersGeneral-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersGeneral-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersGeometry-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersGeometry-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersModeling-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersModeling-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersSources-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersSources-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersStatistics-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersStatistics-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkglew-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkglew-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkImagingCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkImagingCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkImagingFourier-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkImagingFourier-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkImagingHybrid-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkImagingHybrid-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkInfovisCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkInfovisCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkInteractionStyle-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkInteractionStyle-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOGeometry-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOGeometry-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOImage-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOImage-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOInfovis-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOInfovis-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOLegacy-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOLegacy-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOPLY-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOPLY-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOXML-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOXML-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOXMLParser-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOXMLParser-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkjpeg-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkjpeg-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkjsoncpp-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkjsoncpp-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtklibxml2-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtklibxml2-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkmetaio-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkmetaio-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkParallelCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkParallelCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkpng-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkpng-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkRenderingCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkRenderingCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkRenderingOpenGL2-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkRenderingOpenGL2-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtksys-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtksys-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtktiff-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtktiff-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkzlib-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkzlib-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/alglib/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkexpat/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkglew/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkjpeg/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkjsoncpp/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtklibxml2/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkmetaio/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkpng/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtksys/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtktiff/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkzlib/
LOCAL_STATIC_LIBRARIES := cpufeatures android_native_app_glue ndk_helper
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_CPPFLAGS += --std=c++11
LOCAL_LDLIBS := -llog
LOCAL_MODULE := ndk1
LOCAL_SRC_FILES := native.cxx
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
这可能是一个非常愚蠢的错误(仍然是新手),但如果可能的话,我希望得到一些帮助。
编辑:正如这里的一些帖子所建议的那样,我已经尝试过 LOCAL_ALLOW_UNDEFINED_SYMBOLS:=true
但它所做的只是忽略问题,直到 运行 时间,当我尝试 运行 应用程序 returns 时直接出现错误,如下所示:
dlopen("/data/app-lib/com.example.vtknative-2/libndk1.so") failed: dlopen failed: cannot locate symbol
"_ZN32vtkAndroidRenderWindowInteractor14HandleKeyEventEbiii" referenced by "libndk1.so"...
EDIT2:按照@samgak 的建议,我将预构建的静态库添加到我的LOCAL_STATIC_LIBRARIES 列表中。
然而我得到的第一个错误是:
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
这里是 vtkAlgorithm.h 中的对应行(第 389,390 和 391 行)
vtkAlgorithmOutput* GetOutputPort(int index);
vtkAlgorithmOutput* GetOutputPort() {
return this->GetOutputPort(0); }
将预构建的静态库添加到 LOCAL_STATIC_LIBRARIES
列表:
LOCAL_STATIC_LIBRARIES := cpufeatures android_native_app_glue ndk_helper \
libvtkalglib-6.3 \
libvtkCommonColor-6.3 \
libvtkCommonComputationalGeometry-6.3 \
libvtkCommonCore-6.3 \
libvtkCommonMath-6.3 \
libvtkCommonMisc-6.3 \
libvtkCommonSystem-6.3 \
libvtkCommonTransforms-6.3 \
libvtkDICOMParser-6.3 \
libvtkexpat-6.3 \
libvtkFiltersCore-6.3 \
libvtkFiltersExtraction-6.3 \
libvtkFiltersGeneral-6.3 \
libvtkFiltersGeometry-6.3 \
libvtkFiltersModeling-6.3 \
libvtkFiltersSources-6.3 \
libvtkFiltersStatistics-6.3 \
libvtkglew-6.3 \
libvtkImagingCore-6.3 \
libvtkImagingFourier-6.3 \
libvtkImagingHybrid-6.3 \
libvtkInfovisCore-6.3 \
libvtkInteractionStyle-6.3 \
libvtkIOCore-6.3 \
libvtkIOGeometry-6.3 \
libvtkIOImage-6.3 \
libvtkIOInfovis-6.3 \
libvtkIOLegacy-6.3 \
libvtkIOPLY-6.3 \
libvtkIOXML-6.3 \
libvtkIOXMLParser-6.3 \
libvtkjpeg-6.3 \
libvtkjsoncpp-6.3 \
libvtklibxml2-6.3 \
libvtkmetaio-6.3 \
libvtkParallelCore-6.3 \
libvtkpng-6.3 \
libvtkRenderingCore-6.3 \
libvtkRenderingOpenGL2-6.3 \
libvtksys-6.3 \
libvtktiff-6.3 \
libvtkzlib-6.3
看起来这个 Android.mk 刚刚完成了工作。我也 post Application.mk 以防万一,它也可能对其他人有帮助。
看来我没有正确链接。我们所做的方法根本行不通,而我在使用以下文件时没有收到任何错误。
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndk1
# Recursive wildcard in pure make, no external commands required
# From:
rwildcard=$(wildcard ) $(foreach d,$(wildcard *),$(call rwildcard,$d/,))
# Recursively find all *.cpp files under LOCAL_PATH
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(call rwildcard,$(LOCAL_PATH),*.cpp))
# Compiler flags
# LOCAL_CFLAGS += -Ofast -Wall -Wextra -pedantic -Wno-unused-parameter -DNDEBUG
LOCAL_CFLAGS += -Ofast -Wall -Wextra -pedantic -Wno-unused-parameter -UNDEBUG
# LOCAL_CFLAGS += -O0 -g -Wall -Wextra -pedantic -Wno-unused-parameter
# (optional) Silence warnings in the NDK headers
LOCAL_CFLAGS += -isystem ${NDK_ROOT}/platforms/$(TARGET_PLATFORM)/arch-arm/usr/include
# Enable NEON instructions
LOCAL_ARM_NEON := true
# Use the more efficient 32-bit instructions, at the expense
# of a larger code size
LOCAL_ARM_MODE := arm
# Logging library (__android_log_* functions)
LOCAL_LDLIBS += -llog
# OpenGL ES 2.0
LOCAL_LDLIBS += -lGLESv2
# LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
LOCAL_LDFLAGS += -L /Users/lonnibesancon/Desktop/VTK/buildandroid2/CMakeExternals/Build/vtk-android/lib/
# NOTE: the link order is important!
LOCAL_LDFLAGS += -lvtkIOXML-6.3 -lvtkIOLegacy-6.3 -lvtkIOPLY-6.3 -lvtkIOGeometry-6.3 -lvtkFiltersModeling-6.3 -lvtkImagingCore-6.3 -lvtkRenderingCore-6.3 -lvtkIOImage-6.3 -lvtkDICOMParser-6.3 -lvtkmetaio-6.3 -lvtkpng-6.3 -lvtktiff-6.3 -lvtkjpeg-6.3 -lvtkFiltersSources-6.3 -lvtkFiltersGeometry-6.3 -lvtkIOXMLParser-6.3 -lvtkIOCore-6.3 -lvtkexpat-6.3 -lvtkFiltersExtraction-6.3 -lvtkFiltersGeneral-6.3 -lvtkFiltersCore-6.3 -lvtkCommonExecutionModel-6.3 -lvtkCommonComputationalGeometry-6.3 -lvtkCommonDataModel-6.3 -lvtkCommonMisc-6.3 -lvtkCommonTransforms-6.3 -lvtkCommonSystem-6.3 -lvtkCommonMath-6.3 -lvtkCommonCore-6.3 -lvtksys-6.3 -lvtkzlib-6.3
#notfound : -lvtkRenderingFreeType-6.3
# Use -isystem to silence warnings in the VES headers
#LOCAL_CFLAGS += -isystem $(LOCAL_PATH)/../../thirdparty/VES/Apps/Android/CMakeBuild/build/CMakeExternals/Install/eigen
#LOCAL_CFLAGS += -isystem $(LOCAL_PATH)/../../thirdparty/VES/Apps/Android/CMakeBuild/build/CMakeExternals/Install/vtk-android/include/vtk-6.3/
# LOCAL_C_INCLUDES += ${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
# LOCAL_C_INCLUDES += ${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
#LOCAL_SHARED_LIBRARIES := artoolkit
# LOCAL_SHARED_LIBRARIES := artoolkitplus
include $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_ABI := armeabi-v7a
APP_STL := gnustl_shared
GCC_ENABLE_CPP_RTTI := YES
# Set target Android API level to the application's minimum SDK version.
APP_PLATFORM := android-14
尽管我仍然收到一些关于 android 版本和共享库的警告,但它构建得很好。
我正在尝试使用 android 的 VTK 为 android 开发应用程序。 到目前为止,我已经编译了所有源代码,一切正常。
现在我被困在这里,一个未定义的引用错误是:
Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in /Users/lonnibesancon/Documents/workspace/TestNativecopy/AndroidManifest.xml
[armeabi-v7a] Compile++ thumb: ndk1 <= native.cxx
[armeabi-v7a] Compile thumb : android_native_app_glue <= android_native_app_glue.c
[armeabi-v7a] StaticLibrary : libandroid_native_app_glue.a
[armeabi-v7a] SharedLibrary : libndk1.so
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkRenderWindow::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkRenderer::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkAndroidRenderWindowInteractor::New()'
/Users/lonnibesancon/Documents/workspace/TestNativecopy/jni/native.cxx:61: error: undefined reference to 'vtkRenderWindowInteractor::SetRenderWindow(vtkRenderWindow*)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkSphereSource::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkPolyDataMapper::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkActor::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkConeSource::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkGlyph3D::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkGlyph3D.h:131: error: undefined reference to 'vtkGlyph3D::SetSourceConnection(int, vtkAlgorithmOutput*)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkPolyDataMapper::New()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkNew.h:66: error: undefined reference to 'vtkActor::New()'
/Users/lonnibesancon/Documents/workspace/TestNativecopy/jni/native.cxx:88: error: undefined reference to 'vtkRenderer::AddActor(vtkProp*)'
/Users/lonnibesancon/Documents/workspace/TestNativecopy/jni/native.cxx:89: error: undefined reference to 'vtkRenderer::AddActor(vtkProp*)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkDebugLeaksManager.h:39: error: undefined reference to 'vtkDebugLeaksManager::vtkDebugLeaksManager()'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkDebugLeaksManager.h:39: error: undefined reference to 'vtkDebugLeaksManager::~vtkDebugLeaksManager()'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:190: error: undefined reference to 'AInputQueue_getEvent'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:192: error: undefined reference to 'AInputQueue_preDispatchEvent'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:197: error: undefined reference to 'AInputQueue_finishEvent'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:211: error: undefined reference to 'AConfiguration_new'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:212: error: undefined reference to 'AConfiguration_fromAssetManager'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:66: error: undefined reference to 'AConfiguration_getLanguage'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:67: error: undefined reference to 'AConfiguration_getCountry'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:223: error: undefined reference to 'ALooper_prepare'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:224: error: undefined reference to 'ALooper_addFd'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:179: error: undefined reference to 'AInputQueue_detachLooper'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:181: error: undefined reference to 'AConfiguration_delete'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:95: error: undefined reference to 'AInputQueue_detachLooper'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:100: error: undefined reference to 'AInputQueue_attachLooper'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:134: error: undefined reference to 'AConfiguration_fromAssetManager'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:66: error: undefined reference to 'AConfiguration_getLanguage'
/Users/lonnibesancon/android-ndk-r10e/sources/android/native_app_glue/android_native_app_glue.c:67: error: undefined reference to 'AConfiguration_getCountry'
collect2: error: ld returned 1 exit status
make: *** [/Users/lonnibesancon/Documents/workspace/TestNativecopy/obj/local/armeabi-v7a/libndk1.so] Error 1
我的 android.mk 文件的内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# VTK Libs
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkalglib-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkalglib-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonColor-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonColor-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonComputationalGeometry-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonComputationalGeometry-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonMath-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonMath-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonMisc-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonMisc-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonSystem-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonSystem-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkCommonTransforms-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkCommonTransforms-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkDICOMParser-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkDICOMParser-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkexpat-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkexpat-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersExtraction-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersExtraction-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersGeneral-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersGeneral-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersGeometry-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersGeometry-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersModeling-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersModeling-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersSources-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersSources-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkFiltersStatistics-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkFiltersStatistics-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkglew-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkglew-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkImagingCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkImagingCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkImagingFourier-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkImagingFourier-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkImagingHybrid-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkImagingHybrid-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkInfovisCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkInfovisCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkInteractionStyle-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkInteractionStyle-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOGeometry-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOGeometry-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOImage-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOImage-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOInfovis-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOInfovis-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOLegacy-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOLegacy-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOPLY-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOPLY-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOXML-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOXML-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkIOXMLParser-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkIOXMLParser-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkjpeg-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkjpeg-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkjsoncpp-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkjsoncpp-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtklibxml2-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtklibxml2-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkmetaio-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkmetaio-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkParallelCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkParallelCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkpng-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkpng-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkRenderingCore-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkRenderingCore-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkRenderingOpenGL2-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkRenderingOpenGL2-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtksys-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtksys-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtktiff-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtktiff-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libvtkzlib-6.3
LOCAL_SRC_FILES = /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/lib/libvtkzlib-6.3.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/alglib/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkexpat/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkglew/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkjpeg/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkjsoncpp/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtklibxml2/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkmetaio/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkpng/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtksys/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtktiff/
LOCAL_C_INCLUDES += /Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkzlib/
LOCAL_STATIC_LIBRARIES := cpufeatures android_native_app_glue ndk_helper
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_CPPFLAGS += --std=c++11
LOCAL_LDLIBS := -llog
LOCAL_MODULE := ndk1
LOCAL_SRC_FILES := native.cxx
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
这可能是一个非常愚蠢的错误(仍然是新手),但如果可能的话,我希望得到一些帮助。
编辑:正如这里的一些帖子所建议的那样,我已经尝试过 LOCAL_ALLOW_UNDEFINED_SYMBOLS:=true
但它所做的只是忽略问题,直到 运行 时间,当我尝试 运行 应用程序 returns 时直接出现错误,如下所示:
dlopen("/data/app-lib/com.example.vtknative-2/libndk1.so") failed: dlopen failed: cannot locate symbol
"_ZN32vtkAndroidRenderWindowInteractor14HandleKeyEventEbiii" referenced by "libndk1.so"...
EDIT2:按照@samgak 的建议,我将预构建的静态库添加到我的LOCAL_STATIC_LIBRARIES 列表中。 然而我得到的第一个错误是:
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
/Users/lonnibesancon/Desktop/VTK/build4/CMakeExternals/Install/vtk-android/include/vtk-6.3/vtkAlgorithm.h:391: error: undefined reference to 'vtkAlgorithm::GetOutputPort(int)'
这里是 vtkAlgorithm.h 中的对应行(第 389,390 和 391 行)
vtkAlgorithmOutput* GetOutputPort(int index);
vtkAlgorithmOutput* GetOutputPort() {
return this->GetOutputPort(0); }
将预构建的静态库添加到 LOCAL_STATIC_LIBRARIES
列表:
LOCAL_STATIC_LIBRARIES := cpufeatures android_native_app_glue ndk_helper \
libvtkalglib-6.3 \
libvtkCommonColor-6.3 \
libvtkCommonComputationalGeometry-6.3 \
libvtkCommonCore-6.3 \
libvtkCommonMath-6.3 \
libvtkCommonMisc-6.3 \
libvtkCommonSystem-6.3 \
libvtkCommonTransforms-6.3 \
libvtkDICOMParser-6.3 \
libvtkexpat-6.3 \
libvtkFiltersCore-6.3 \
libvtkFiltersExtraction-6.3 \
libvtkFiltersGeneral-6.3 \
libvtkFiltersGeometry-6.3 \
libvtkFiltersModeling-6.3 \
libvtkFiltersSources-6.3 \
libvtkFiltersStatistics-6.3 \
libvtkglew-6.3 \
libvtkImagingCore-6.3 \
libvtkImagingFourier-6.3 \
libvtkImagingHybrid-6.3 \
libvtkInfovisCore-6.3 \
libvtkInteractionStyle-6.3 \
libvtkIOCore-6.3 \
libvtkIOGeometry-6.3 \
libvtkIOImage-6.3 \
libvtkIOInfovis-6.3 \
libvtkIOLegacy-6.3 \
libvtkIOPLY-6.3 \
libvtkIOXML-6.3 \
libvtkIOXMLParser-6.3 \
libvtkjpeg-6.3 \
libvtkjsoncpp-6.3 \
libvtklibxml2-6.3 \
libvtkmetaio-6.3 \
libvtkParallelCore-6.3 \
libvtkpng-6.3 \
libvtkRenderingCore-6.3 \
libvtkRenderingOpenGL2-6.3 \
libvtksys-6.3 \
libvtktiff-6.3 \
libvtkzlib-6.3
看起来这个 Android.mk 刚刚完成了工作。我也 post Application.mk 以防万一,它也可能对其他人有帮助。
看来我没有正确链接。我们所做的方法根本行不通,而我在使用以下文件时没有收到任何错误。
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndk1
# Recursive wildcard in pure make, no external commands required
# From:
rwildcard=$(wildcard ) $(foreach d,$(wildcard *),$(call rwildcard,$d/,))
# Recursively find all *.cpp files under LOCAL_PATH
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(call rwildcard,$(LOCAL_PATH),*.cpp))
# Compiler flags
# LOCAL_CFLAGS += -Ofast -Wall -Wextra -pedantic -Wno-unused-parameter -DNDEBUG
LOCAL_CFLAGS += -Ofast -Wall -Wextra -pedantic -Wno-unused-parameter -UNDEBUG
# LOCAL_CFLAGS += -O0 -g -Wall -Wextra -pedantic -Wno-unused-parameter
# (optional) Silence warnings in the NDK headers
LOCAL_CFLAGS += -isystem ${NDK_ROOT}/platforms/$(TARGET_PLATFORM)/arch-arm/usr/include
# Enable NEON instructions
LOCAL_ARM_NEON := true
# Use the more efficient 32-bit instructions, at the expense
# of a larger code size
LOCAL_ARM_MODE := arm
# Logging library (__android_log_* functions)
LOCAL_LDLIBS += -llog
# OpenGL ES 2.0
LOCAL_LDLIBS += -lGLESv2
# LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
LOCAL_LDFLAGS += -L /Users/lonnibesancon/Desktop/VTK/buildandroid2/CMakeExternals/Build/vtk-android/lib/
# NOTE: the link order is important!
LOCAL_LDFLAGS += -lvtkIOXML-6.3 -lvtkIOLegacy-6.3 -lvtkIOPLY-6.3 -lvtkIOGeometry-6.3 -lvtkFiltersModeling-6.3 -lvtkImagingCore-6.3 -lvtkRenderingCore-6.3 -lvtkIOImage-6.3 -lvtkDICOMParser-6.3 -lvtkmetaio-6.3 -lvtkpng-6.3 -lvtktiff-6.3 -lvtkjpeg-6.3 -lvtkFiltersSources-6.3 -lvtkFiltersGeometry-6.3 -lvtkIOXMLParser-6.3 -lvtkIOCore-6.3 -lvtkexpat-6.3 -lvtkFiltersExtraction-6.3 -lvtkFiltersGeneral-6.3 -lvtkFiltersCore-6.3 -lvtkCommonExecutionModel-6.3 -lvtkCommonComputationalGeometry-6.3 -lvtkCommonDataModel-6.3 -lvtkCommonMisc-6.3 -lvtkCommonTransforms-6.3 -lvtkCommonSystem-6.3 -lvtkCommonMath-6.3 -lvtkCommonCore-6.3 -lvtksys-6.3 -lvtkzlib-6.3
#notfound : -lvtkRenderingFreeType-6.3
# Use -isystem to silence warnings in the VES headers
#LOCAL_CFLAGS += -isystem $(LOCAL_PATH)/../../thirdparty/VES/Apps/Android/CMakeBuild/build/CMakeExternals/Install/eigen
#LOCAL_CFLAGS += -isystem $(LOCAL_PATH)/../../thirdparty/VES/Apps/Android/CMakeBuild/build/CMakeExternals/Install/vtk-android/include/vtk-6.3/
# LOCAL_C_INCLUDES += ${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
# LOCAL_C_INCLUDES += ${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
#LOCAL_SHARED_LIBRARIES := artoolkit
# LOCAL_SHARED_LIBRARIES := artoolkitplus
include $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_ABI := armeabi-v7a
APP_STL := gnustl_shared
GCC_ENABLE_CPP_RTTI := YES
# Set target Android API level to the application's minimum SDK version.
APP_PLATFORM := android-14
尽管我仍然收到一些关于 android 版本和共享库的警告,但它构建得很好。