dll與exe之間的互動

2021-04-15 12:24:41 字數 423 閱讀 1578

外掛程式一般是以dll的形式存在,而宿主則以exe的形式存在,他們之間必然要互動。

通常,互動方式可以是com,一種微軟定義的複雜介面方式,不過支援的人挺多的,但是不利於跨平台使用,而且開發太複雜了。

另一方式就是使用訊息系統,互動之間傳遞訊息,還可以實現互動,就是處理起來用非同步方式,稍微有點不自然,也不利於跨平台使用。

還有一種方式就是相互呼叫函式,exe呼叫dll的方式早在dll誕生的時候就已經存在,使用loadlibrary,再用getprocaddress取得函式位址,就可以呼叫了。

而dll並無直接呼叫exe的手段,不過exe可以傳遞過callback之類函式指標讓dll來呼叫,這就形成了互動,並且在win32api中也是常用的手段,最典型的例子就是鉤子函式。很多linux的動態庫也是使用這種方式。並且可以不限制開發外掛程式的程式語言,只要符合dll規定就行了。 

dll與exe的區別

dll 中雖然包含了可執行 卻不能單獨執行,而應由 windows 應用程式直接或間接呼叫。所謂靜態鏈結是指把要呼叫的函式或者過程鏈結到可執行檔案中,成為可執行檔案的一部分。換句話說,函式和過程的 就在程式的 exe檔案中,該檔案包含了執行時所需的全部 當多個程式都呼叫相同函式時,記憶體中就會存在這...

OBJ LIB DLL與EXE之間的關係

obj是中間 檔案 lib是靜態庫檔案 dll是動態庫檔案 exe是可執行檔案。對於靜態庫檔案,鏈結的時候把其中需要的東西抽取出來嵌入到exe中,exe較大。對於動態庫檔案,exe執行的時候依賴於dll提供的功能,沒有dll則exe無法執行,exe較小。乙個c或cpp檔案被編譯後既是乙個obj,當所...

DLL和EXE的區別

動態鏈結庫 dynamic link library,縮寫為dll 是乙個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態鏈結庫檔案的副檔名一般是dll,也有可能是drv sys和fon,它和可執行檔案 exe 非常類似.區別dll中雖然包含了可執行 卻不能單獨執行,而應...