2012-07-11 2 views
6

에서 나는 FMOD 예 폴더에 nativeactivity라는 예제를 찾았지만, 불행히도 일부 자바 코드를 사용로드 FMOD 순수 네이티브 코드

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) 

인가 그것은 자바 부분없이 할 수 있습니까? 그렇다면 무엇을 바꾸어야합니까?

답변

6

나는이 몇 줄의 Java를 제거하고자하는 이유를 알지 못합니다. 내가 아는 한, 이것은 나머지 응용 프로그램에는 아무런 영향을 미치지 않습니다.

자바가 필요한 이유는 libghost.so에서 참조를 해결하는 데 필수적인 libfmodex.so을 Android 시스템 로더에서 찾을 수 없다는 것입니다. 따라서 libghost.so의로드가 실패합니다. Java를 사용하면 라이브러리가로드되기 전에 종속성을 미리로드 할 수 있습니다.

불행히도 NativeActivity 자체는 하나의 라이브러리 만로드 할 수 있습니다. 2012 년 4 월에 request이 게시되어 앞으로 상황을 개선 할 예정입니다.

현재, 동적 링크에 FMOD와 함께 작동하는 모든 코드를 전환하거나 FMOD를 넣은 다음 유령 라이브러리를로드 세 번째 공유 라이브러리를 구축 할 수 있습니다. 이 경우 로더는 고스트에있는 참조를 확인할 수 있습니다. fmod이 이미로드되어 있기 때문입니다.