1 FranzKafka95 OP 另外备注一下,本身我们的进程属于 root 进程,而且 /system/lib64 对于 root 是可读写的,但就是不清楚为什么 cp 执行不成功,脑壳痛 |
2 cppc 2022-03-11 12:48:45 +08:00 一个 so ,两份头文件分别给两家厂商。你这个场景我看着像提供两份特供 SDK ,不是别人来适配你们。。 |
3 jorneyr 2022-03-11 12:51:13 +08:00 so 动态加载 |
4 FranzKafka95 OP @cppc 一份头文件,给两个甚至多个厂家,厂家来实现提供 so 库,我们集成厂家的 so 库 |
5 FranzKafka95 OP @jorneyr 请问如果实现这个动态加载,除了 dlopen 的这种形式坏还有其他办法吗 |
6 cppc 2022-03-11 13:28:12 +08:00 @FranzKafka95 搞半天你才是服务使用方,你自己开发一个代理层,它在根据需求加载同厂家的 so ,把 so 的句柄,和函数指针保存起来,你自己应用不直接调用厂商的 so ,而是通过这个代理来调用。 |
7 jorneyr 2022-03-11 13:30:21 +08:00 @FranzKafka95 好像没了,就是 so 的隐式动态加载。 |
8 FranzKafka95 OP @cppc 貌似只有这样改了,可是我还是不死心,为什么不能 cp 到 system/lib64 直接以系统加载的方式直接掉接口 |
9 cppc 2022-03-11 14:00:24 +08:00 jna 跨平台动态库加载实现是这样的:它加载动态库时,先判断当前环境,然后把 jar 包里面的动态库保存到临时目录,最后再通过绝对路径加载动态库。 都是 java ,可抄 |
10 FranzKafka95 OP @cppc 我们是 native C++的应用,你说的这个我知道,最终都是通过 dlopen 动态加载,可现在我就是不想通过 dlopen 加载 |
11 orannge 2022-03-11 23:03:16 +08:00 要是 /system/lib64 改了,系统还怎么做 OTA 升级?这样明显不行 |