求助有谁解决过这样的问题 static inline void *LoadSurface(const char *psz_lib, vout_display_sys_t *sys) {
    void *p_library = dlopen(psz_lib, RTLD_NOW);
    __android_log_print(ANDROID_LOG_ERROR, "faplayer", "LoadSurface 1!");
    if (p_library) {
        sys->s_lock = (Surface_lock)(dlsym(p_library, ANDROID_SYM_S_LOCK));
        sys->s_unlockAndPost =
            (Surface_unlockAndPost)(dlsym(p_library, ANDROID_SYM_S_UNLOCK));
        if (sys->s_lock && sys->s_unlockAndPost) {
          __android_log_print(ANDROID_LOG_ERROR, "faplayer", "LoadSurface success 2!");
            return p_library;
        }
        dlclose(p_library);
    }
    __android_log_print(ANDROID_LOG_ERROR, "faplayer", "LoadSurface error 3!");
    return NULL;
}在4.0上运行dlopen系统SO库时失败,无法打开。我试过用罪行的NDK-r7b进行编译,但是也不好使。是不是Android4.0加了更高级的访问权限,导致系统SO禁访了

解决方案 »

  1.   

    Android.mk 中
    LOCAL_SHARED_LIBRARIES := \
        libpsz_lib void *p_library = dlopen("./psz_lib.so", RTLD_NOW);应该没有问题
      

  2.   

    楼主解决了吗? 我现在也遇到同样的问题。 vlc在android4.0 播放视频的时候只有图像没有声音。
    我用的vlc移植版本位: https://github.com/tewilove/faplayer/tree/message-player
      

  3.   

    问题解决:    谢谢个位!    Android做移植不讲究,libsurfaceflinger_client.so已经不存在了,虽然在system中存在,其实是个空库。
    并且方法名也用很多变化。    修改方法:
        修改androidsurface.c代码。# define ANDROID_SYM_S_LOCK "_ZN7android7Surface4lockEPNS0_11SurfaceInfoEPNS_6RegionE"//_ZN7android7Surface4lockEPNS0_11SurfaceInfoEb _ZN7android7Surface4lockEPNS0_11SurfaceInfoEPNS_6RegionE
    #endif
    #ifndef ANDROID_SYM_S_UNLOCK
    # define ANDROID_SYM_S_UNLOCK "_ZN7android7Surface13unlockAndPostEv"//_ZN7android7Surface13unlockAndPostEv
    #endif....static void *InitLibrary(vout_display_sys_t *sys) {
        void *p_library;
        if ((p_library = LoadSurface("libsurfaceflinger_client.so", sys)))
            return p_library;
        return LoadSurface("libui.so", sys);
    }     希望对用vlc的朋友有帮助!
      

  4.   

    4.0 下 貌似以上方法行不通, libsurfaceflinger_client.so已经无效了, libui.so也行不通;不知道楼上是如何解决的, thx
      

  5.   

    不好意思,写错了    return LoadSurface("libgui.so", sys);
      

  6.   

    最新的vlc-android的代码里有兼容实现