當前位置:聚美館>智慧生活>心理>

dll和so檔案區別

心理 閱讀(8.03K)
dll和so檔案區別

Dll與或b(MacOS)檔案所使用的機制幾乎相同,因此很難確切解釋它們之間的區別。

核心區別在於每種檔案類型默認情況下可見的內容。檔案匯出語言(gcc)級連結-這意味着(默認情況下)拉入時(默認情況下)所有“外部”的C&c++符號都可用於連結。這也意味着,解析檔案本質上是一個連結步驟,加載程序不關心符號來自哪個檔案。它僅遵循.a檔案遵循的常規連結步驟規則,以某種順序搜尋指定的檔案。

另一方面,Dll檔案是一種操作系統功能,與語言的連結步驟完全分開。MSVC使用檔案來連結靜態庫和動態庫(每個dll檔案都會生成一個用於連結的成對的檔案),因此,一旦生成該程序,就將其完全“連結”(從語言中心角度)。。

但是,在連結階段,會在代表Dll的庫中解析符號,從而允許連結程序在PE檔案中構建匯入表,其中包含dll的顯式列表以及每個dll中引用的入口點。在加載時,Windows不必執行“連結”來解析共享庫中的符號:該步驟已經完成-Windows加載器僅加載dll並直接連接函數