Android ndk 纯粹从本机代码加载FMOD
我在FMOD示例文件夹中找到了一个名为nativeactivity的示例,但不幸的是,它使用了一些java代码:Android ndk 纯粹从本机代码加载FMOD,android-ndk,fmod,Android Ndk,Fmod,我在FMOD示例文件夹中找到了一个名为nativeactivity的示例,但不幸的是,它使用了一些java代码: package org.fmod.nativeactivity; public class Example extends android.app.NativeActivity { static { System.loadLibrary("fmodex"); System.loadLibrary("main"); }
package org.fmod.nativeactivity;
public class Example extends android.app.NativeActivity
{
static
{
System.loadLibrary("fmodex");
System.loadLibrary("main");
}
}
Android.mk如下所示:
LOCAL_PATH := $(call my-dir)
#
# FMOD Ex Shared Library
#
include $(CLEAR_VARS)
LOCAL_MODULE := fmodex
LOCAL_SRC_FILES := libfmodex.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/inc
include $(PREBUILT_SHARED_LIBRARY)
#
# Example Library
#
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := main.c
LOCAL_LDLIBS := -llog -landroid
LOCAL_SHARED_LIBRARIES := fmodex
LOCAL_STATIC_LIBRARIES := android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
有没有可能不使用java部分?如果是这样的话,我需要改变什么?我不知道你为什么要去掉这几行Java。据我所知,这对应用程序的其余部分没有影响 您需要Java的原因是Android system loader无法找到
libfmodex.so
,这对于解析libghost.so中的引用至关重要。因此,libghost.so的加载失败。Java允许您在加载库之前预加载依赖项
不幸的是,NativeActivity本身只能加载一个库。2012年4月发布了一份报告,以改善未来某个时候的情况
目前,您可以将使用fmod的所有代码切换到动态链接,或者构建第三个共享库,该库将加载fmod,然后加载重影库。在这种情况下,加载程序将能够解析ghost中的引用,因为fmod已经加载