在android上动态链接mono



我已经成功地为android编译了monogen-2.0。当我静态链接libmonosgen-2.0.a时,我的应用程序运行良好。

但当我动态链接libmonogen-2.0时,应用程序就不起作用了。这个应用程序根本没有出现,eclipse也没有给我任何信息。上面只写着致命异常。

这是我的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加载libmonogener-2.0.so,并使用dlsym获取它的方法,它就可以正常工作。

您是如何为android平台编译libmonosgen的?我使用的是原始的mono构建脚本,但是生成的libmonosgen-2.0.so与用于Android应用程序的Xamarin mono附带的libmonos gen-2.0.不同(主要需要的库不同)。我使用这些配置选项:

--使用sgen=yes--禁用boehm--使用monodroid=yes--禁止mcs构建--使用sigaltstack=no--主机=arm none linux gnueabi--目标=arm nonelinux gnueobi

这实际上可以回答您的问题,因为在静态编译中,不需要像动态链接那样额外的动态库。

最新更新