VC的Manifest


1. Manifest是個XML的描述文件,對於每個DLL有DLL的Manifest文件,對於每個應用程序Application也有自己的Manifest。
2. 對於應用程序而言,Manifest可以是一個和exe文件同一目錄下的.manifest文件,也可以是作爲一個資源嵌入在exe文件內部的(Embed Manifest)。
3. XP以前版本的windows,會像以前那樣執行這個exe文件,尋找相應的dll,沒有分別Manifest只是個多餘的文件或資源,dll文件會直接到system32的目錄下查找,並且調用。
4. 而XP以後的操作系統,則會首先讀取Manifest,獲得exe文件需要調用的DLL列表(此時獲得的,並不直接是DLL文件的本身的位置,而是DLL 的manifest)操作系統再根據DLL的Manifest去尋找對應的DLL<因此就可能區別不同版本的同一個DLL文件,或是指定一個程序本身Isolated的DLL>。
5. 如果程序是靜態鏈接的,沒有使用dll,只使用了操作系統核心的 Kernel32.dll, User32.dll, Ole32.dll, 或ShDocVW.dll 等,project的設置必須是Use Standard Windows Libraries、Not Using ATL、No Common Language Runtime support,那麼你可以不需要考慮Manifest 可以關掉它。
6. VS2005中Menifest相關的設置:
Project/Properties/Linker/Manifest File/Generate Manifest 決定是否生成Manifest,如上情況纔可以關閉
Project/Properties/Linker/Manifest File/Allow Isolation 這個是設置DLL的調用的,並不能決定Manifest是否還是必須的
Project/Properties/Manifest Tool/Input and Output/Embed Manifest 決定Manifest是個單獨的文件還是嵌入到exe內的資源
發佈了19 篇原創文章 · 獲贊 16 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章