symdl :一个可以替代dlsym的小工具

作者:知水为命
链接:https://www.jianshu.com/p/a3360859bc96

前面已经写了几篇文章介绍MangoFix了,一个语法和Objective-C非常相似的SDL,用来对iOS App进行热修复。但是MangoFix1.x版本中对于需要用到的C函数要进行预埋,而哪些C函数需要进行预埋,这其实是不可预测的。所以MangoFix在2.0中会添加 C函数声明即用功能,这就需要用到dlsym函数,但是使用了这个函数后在App Store是审核不过的,所以最近写了一个小工具,功能和dlsym一样,即通过动态链接的C函数名字符串,获取函数指针。这个小工具就是:symdl。 GitHub地址:github.com/YPLiang19/s…

下面就是对symdl的介绍:

symdl

symdl is a simple little tool, its function is very similar to dlsym, with symdl, you can pass in the dynamic linked C function name string, get the function pointer, so as to achieve the dynamic call of C function.

Example

 #import <symdl/symdl.h>
#import <dlfcn.h>

int main(){
    typedef  void * (*MyFunc)(const char *__path, int __mode);
    
    const char *func_name = "dlopen";
    MyFunc dlopen_ptr = symdl(func_name);
    if (dlopen_ptr) {
        dlopen_ptr("your path",RTLD_LAZY);
    }
}
复制代码

Installation

CocoaPods

  1. Add pod 'symdl' to your Podfile.
  2. Run pod install or pod update.
  3. Import <symdl/symdl.h>







转载于:https://juejin.im/post/5d5a3d43e51d4561fa2ec063

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值