求助有谁解决过这样的问题 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禁访了
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禁访了
LOCAL_SHARED_LIBRARIES := \
libpsz_lib void *p_library = dlopen("./psz_lib.so", RTLD_NOW);应该没有问题
我用的vlc移植版本位: https://github.com/tewilove/faplayer/tree/message-player
并且方法名也用很多变化。 修改方法:
修改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的朋友有帮助!