首先使用Xcode生成一個(gè)dylib,其中有2個(gè)方法,一個(gè)是oc的方法ttt,一個(gè)是c函數(shù)sss

-w601

-w636
然后打包成
dylib,這里要注意,如果我們要生成后綴為dylib的文件,需要如下操作,首先右鍵.xcodeproj文件顯示包內(nèi)容,然后打開project.pbxproj,修改productType = "com.apple.product-type.framework";為
productType = "com.apple.product-type.library.dynamic"最后run之后就會(huì)生成
.dylib的動(dòng)態(tài)庫(kù)。
調(diào)用C函數(shù)

-w534
成功打印出來(lái)了
我的c方法
調(diào)用OC方法
這里我想當(dāng)然的和調(diào)用c一個(gè)路子,直接將sss改成ttt
,然后運(yùn)行結(jié)果打印出來(lái)為func error,通過(guò)斷點(diǎn)查看到cmethod函數(shù)指針為NULL

-w669
后來(lái)在網(wǎng)上查到資料得知
dlsym用的參數(shù)是符號(hào)名而不是selector,然后我使用nm命令查看了dylib的符號(hào)表
-w398
然后嘗試將
dlsym的參數(shù)改為[Test ttt]、-[Test ttt],最終結(jié)果都是為NULL
最終查找資料還是回到了使用OC的方法,如圖

image.png
但是會(huì)報(bào)錯(cuò),這個(gè)我們只要確定我們的方法名是正確的,我們就直接先臨時(shí)寫一個(gè)類不讓其報(bào)錯(cuò)即可,最終結(jié)果就可以了!

image.png