Plugins
lib/.a和dll/.so的區(qū)別
共有兩種庫(kù):
一種是LIB包含了函數(shù)所在的DLL文件和文件中函數(shù)位置的信息(入口),代碼由運(yùn)行時(shí)加載在進(jìn)程空間中的DLL提供,稱為動(dòng)態(tài)鏈接庫(kù)dynamic link library。
(1)lib是編譯時(shí)用到的,dll是運(yùn)行時(shí)用到的。如果要完成源代碼的編譯,只需要lib;如果要使動(dòng)態(tài)鏈接的程序運(yùn)行起來(lái),只需要dll。
(2)如果有dll文件,那么lib一般是一些索引信息,記錄了dll中函數(shù)的入口和位置,dll中是函數(shù)的具體內(nèi)容;如果只有l(wèi)ib文件,那么這個(gè)lib文件是靜態(tài)編譯出來(lái)的,索引和實(shí)現(xiàn)都在其中。使用靜態(tài)編譯的lib文件,在運(yùn)行程序時(shí)不需要再掛動(dòng)態(tài)庫(kù),缺點(diǎn)是導(dǎo)致應(yīng)用程序比較大,而且失去了動(dòng)態(tài)庫(kù)的靈活性,發(fā)布新版本時(shí)要發(fā)布新的應(yīng)用程序才行。
參考:
一.dll
我的另一篇文章C#與Unity的DLL交互
*C++ 寫(xiě)DLL
*如何將Unity中的腳本文件轉(zhuǎn)為dll文件
VS中的dumpbin的使用
反編譯工具dotPeek
關(guān)于extern擴(kuò)展非靜態(tài)的方法
二.詳解C#中的反射 ;C#之玩轉(zhuǎn)反射;C#反射詳解