美文网首页
使用dlopen加载dylib调用oc函数和c函数

使用dlopen加载dylib调用oc函数和c函数

作者: YxYYxY | 来源:发表于2020-05-03 17:37 被阅读0次

    首先使用Xcode生成一个dylib,其中有2个方法,一个是oc的方法ttt,一个是c函数sss

    -w601
    -w636
    然后打包成dylib,这里要注意,如果我们要生成后缀为dylib的文件,需要如下操作,首先右键.xcodeproj文件显示包内容,然后打开project.pbxproj,修改
    productType = "com.apple.product-type.framework";
    productType = "com.apple.product-type.library.dynamic"
    最后run之后就会生成.dylib的动态库。

    调用C函数

    -w534
    成功打印出来了我的c方法

    调用OC方法

    这里我想当然的和调用c一个路子,直接将sss改成ttt
    ,然后运行结果打印出来为func error,通过断点查看到cmethod函数指针为NULL

    -w669
    后来在网上查到资料得知dlsym用的参数是符号名而不是selector,然后我使用nm命令查看了dylib的符号表
    -w398
    然后尝试将dlsym的参数改为[Test ttt]-[Test ttt],最终结果都是为NULL

    最终查找资料还是回到了使用OC的方法,如图


    image.png

    但是会报错,这个我们只要确定我们的方法名是正确的,我们就直接先临时写一个类不让其报错即可,最终结果就可以了!


    image.png

    相关文章

      网友评论

          本文标题:使用dlopen加载dylib调用oc函数和c函数

          本文链接:https://www.haomeiwen.com/subject/cxqjghtx.html