在 android 上动态链接单声道
linking mono dynamically on android
我已经为 android 成功编译了 monosgen-2.0。当我 link libmonosgen-2.0.a 静态时,我的应用程序运行正常。
但是当我 link libmonosgen-2.0.so 动态时,该应用程序无法运行。
该应用程序根本没有出现,日食也没有给我任何信息。
它只是说致命异常。
这是我的 Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := monosgen
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libmonosgen-2.0.so
LOCAL_EXPORT_C_INCLUDES := F:/monoinstall-arm/include/mono-2.0/
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := hellodroid
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_SHARED_LIBRARIES := monosgen
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
嗯。我不知道是什么问题。但是,如果我通过 dlopen 加载 libmonosgen-2.0.so 并使用 dlsym 获取它的方法,它可以正常工作。
请问您是如何为 android 编译 libmonosgen 的?我使用的是原始的单声道构建脚本,但是生成的 libmonosgen-2.0.so 与 Xamarin Mono 随 Android 应用程序一起提供的 libmonosgen-2.0.so 不同(主要是必需的库不同)。我正在使用这些配置选项:
--with-sgen=yes --disable-boehm --with-monodroid=yes --disable-mcs-build --with-sigaltstack=no --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi
这实际上可以回答你的问题,因为在静态编译中,不需要像在动态链接中那样额外的动态库。
我已经为 android 成功编译了 monosgen-2.0。当我 link libmonosgen-2.0.a 静态时,我的应用程序运行正常。
但是当我 link libmonosgen-2.0.so 动态时,该应用程序无法运行。 该应用程序根本没有出现,日食也没有给我任何信息。 它只是说致命异常。
这是我的 Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := monosgen
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libmonosgen-2.0.so
LOCAL_EXPORT_C_INCLUDES := F:/monoinstall-arm/include/mono-2.0/
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := hellodroid
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_SHARED_LIBRARIES := monosgen
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
嗯。我不知道是什么问题。但是,如果我通过 dlopen 加载 libmonosgen-2.0.so 并使用 dlsym 获取它的方法,它可以正常工作。
请问您是如何为 android 编译 libmonosgen 的?我使用的是原始的单声道构建脚本,但是生成的 libmonosgen-2.0.so 与 Xamarin Mono 随 Android 应用程序一起提供的 libmonosgen-2.0.so 不同(主要是必需的库不同)。我正在使用这些配置选项:
--with-sgen=yes --disable-boehm --with-monodroid=yes --disable-mcs-build --with-sigaltstack=no --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi
这实际上可以回答你的问题,因为在静态编译中,不需要像在动态链接中那样额外的动态库。