OpenHarmony开发者论坛
标题:
OpenHarmony项目,如何使用系统里system/lib64里的so库?
[打印本页]
作者:
JunJunYeah
时间:
2024-11-4 10:55
标题:
OpenHarmony项目,如何使用系统里system/lib64里的so库?
### 【问题描述】
使用hdc shell查看设备系统的库,想直接使用系统里system/lib64的so库
1. 介绍问题现象和发生的背景![547cc8f108b30e25ef66e81d1f38dc3.png](
"547cc8f108b30e25ef66e81d1f38dc3.png")![1d12e90e7f18c6126375e0a010b2ad4.png](
"1d12e90e7f18c6126375e0a010b2ad4.png")
2. 相关的代码(请勿使用截图)
```
int FfmpegHelper::getFFmpegVersion() {
// 加载动态库
void *handle = dlopen("/system/lib64/libohosffmpeg.z.so", RTLD_LAZY);
if (!handle) {
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, "Test NAPI", "Cannot load library ");
std::cerr << "Cannot load library: " << dlerror() << std::endl;
return -1;
}
// 重置错误
dlerror();
// 获取函数指针
av_version_func avcodec_version = (av_version_func)dlsym(handle, "avcodec_version");
const char *error = dlerror();
if (error) {
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, "Test NAPI", "avcodec_version %{public}d",error);
std::cerr << "Cannot load symbol 'avcodec_version': " << error << std::endl;
dlclose(handle);
return -1;
}
// 调用函数
const char *version = avcodec_version(LIBAVUTIL_VERSION_MAJOR, LIBAVUTIL_VERSION_MINOR, LIBAVUTIL_VERSION_MICRO);
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, "Test NAPI", "avcodec_version %{public}d", version);
// 关闭动态库
dlclose(handle);
return 0;
}
```
3. 运行结果、错误截图
![1730688586350.png](
"1730688586350.png")
4. 我尝试过的解决方法和结果
我尝试用dlopen的方式去打开libohosffmpeg的库里面的方法avcodec_version 但是获取无效值
5. 我想要达到的结果
正常调用ffmpeg的函数方法
### 【运行环境】
硬件:
ROM版本:润和大禹系列HH-SCDAYU200开发套件 openharmony4.0
DevEvoStudio版本:DevEco Studio 4.1 Release
SDK版本:Api Version 11
作者:
深开鸿_王石
时间:
2024-11-11 16:03
native应用默认就是找自己的应用的lib,你要想要system/lib里的so要不就自己拷贝出来,直接在工程里用,要不就得该这个应用的运行环境了,或者指定环境变量
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5