題 DLL可執行嗎?


術語和分類問題。

DLL是“可執行文件”嗎?

http://en.wikipedia.org/wiki/Executable


4
2018-05-16 13:11


起源


EXE文件和DLL文件都是“可移植可執行”(PE)格式。形式上的區別在於 Characteristics 標題中的字段。如果有點 0x2000 設置,它是一個DLL。但通常DLL也會有一個可用函數列表。 - MSalters


答案:


DLL文件不是可自行執行的,儘管它可能包含可執行代碼。 DLL(動態鏈接庫)包含其他程序可用的代碼,數據,資源等。您需要一個操作系統的EXE文件來執行DLL文件中的代碼,如Windows中的“RUNDLL.EXE”或“RUNDLL32.exe”。


10
2018-05-16 13:24



僅供參考 - 由於DLL確實包含可執行代碼,因此它們會被病毒掃描程序掃描。 - Keltari
@Keltari好點 - 這也是為什麼你應該避免從網上陰暗的地方下載DLL的原因。 - AcId


根據維基百科的文章,DLL是一個可執行文件。

在計算中,可執行文件使計算機“根據編碼指令執行指示的任務”,而不是必須由程序解析為有意義的數據文件。

採用此定義DLL是可執行文件,因為它包含執行任務的編碼指令。

確切的解釋取決於使用;雖然該術語通常僅指機器代碼文件,但在防止計算機病毒的情況下,所有導致潛在危險指令執行的文件(包括腳本)都方便地集中在一起。

對於DLL也是如此。

但是有些人可能會爭辯說DLL本身不能運行,它總是需要一些程序來加載DLL並調用DLL導出的函數,因此從嚴格意義上講,你可能也會說只有exe文件(如果在Windows上)是可執行文件。正如維基百科所說......

確切的解釋取決於使用

我會嘗試使用更清晰的術語或短語,如果在包含或不包含DLL的情況下在給定的上下文中不清楚,則避免使用可執行文件。即使在我的工作(軟件開發人員),我也不確定每個人都會同意“可執行文件”也意味著DLL。


5
2018-05-16 14:15



“根據維基百科的文章,DLL是一個可執行文件”  - 實際上,它並沒有這麼說。你犯了混淆的常見邏輯錯誤 必要和充分的條件。該維基百科的報價指出,擁有可執行代碼是一個 必要 某事物成為可執行文件的條件,而不是它 足夠 條件。 - BlueRaja - Danny Pflughoeft
@BlueRaja和哪個 足夠 你在維基百科的文章中看到過什麼條件?您認為維基百科的文章對DLL文件有什麼看法? - Werner Henze
詞組 an executable file causes a computer "to perform indicated tasks according to encoded instructions" 描述了一個充分條件,而不是必要條件。所以,它說 “是一個可執行文件=>包含機器代碼,” 這與你混淆它的陳述不一樣, “包含機器代碼=>是一個可執行文件。”  我不確定你為什麼提出關於DLL的文章,因為你根本沒有引用它 (你引用了 關於可執行文件的文章) - BlueRaja - Danny Pflughoeft


不,他們不是,即使他們使用類似的文件格式, DLLs是一種存儲位置,您可以在其中放置對可執行文件有用的任何內容。可執行文件將鏈接到DLL並加載 目標代碼,圖標和許多其他的東西。


1
2018-05-16 13:20



您也可以在.EXE中放置相同的內容。兩者都使用“可移植可執行”(PE)格式。 - MSalters
@Spack:我不同意。 DLL是可執行的,因為它包含可執行代碼。與對象文件,腳本或其他形式的代碼相關聯。正如MSalters回答的那樣,EXE可以包含您提到的所有內容。 - galford13x


DLL文件包含可執行代碼,但並不是全部。

通常,DLL文件包含庫函數,幫助程序。


1
2018-05-21 15:25