九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
manifest原理和用途

manifest原理和用途

manifest原理和用途

dll是被動(dòng)態(tài)調(diào)用的,所以會(huì)被若干個(gè)程序共享使用的 但是如果dll在應(yīng)用程序不知道的情況下升級(jí)了、或是被另一個(gè)程序更改了,就可能會(huì)出現(xiàn)問題,即”DLL Hell”

隨著系統(tǒng)資源越來越豐富,硬盤不那么緊張,所以在XP以后的操作系統(tǒng)中,用新的機(jī)制來管理DLL
(這種機(jī)制,這不僅僅是對(duì)于.NET而言,對(duì)于普通的Native程序也是一樣的)

Madifest是個(gè)XML的描述文件,對(duì)于每個(gè)DLL有DLL的Manifest文件,對(duì)于每個(gè)應(yīng)用程序Application也有自己的Manifest

對(duì)于應(yīng)用程序而言,Manifest可以是一個(gè)和exe文件同一目錄下的.manifest文件,也可以是作為一個(gè)資源嵌入在exe文件內(nèi)部的(Embed Manifest)

XP以前版本的windows,會(huì)像以前那樣執(zhí)行這個(gè)exe文件,尋找相應(yīng)的dll,沒有分別
Manifest只是個(gè)多余的文件或資源,dll文件會(huì)直接到system32的目錄下查找,并且調(diào)用

而XP以后的操作系統(tǒng),則會(huì)首先讀取Manifest,獲得exe文件需要調(diào)用的DLL列表
(此時(shí)獲得的,并不直接是DLL文件的本身的位置,而是DLL的manifest)
操作系統(tǒng)再根據(jù)DLL的Manifest去尋找對(duì)應(yīng)的DLL
<因此就可能區(qū)別不同版本的同一個(gè)DLL文件,或是指定一個(gè)程序本身Isolated的DLL>

不過使用Visual Studio 2005以后的一個(gè)新問題是,
VS2005帶的8.0新版的C運(yùn)行庫(VC 8.0 CRT)文件在XP以后支持manifest的Windows版本中被調(diào)用時(shí),
將會(huì)check一下Application自身的Manifest,否則將會(huì)拒絕被調(diào)用
這也就是說,使用Visual Studio開發(fā)的Application,Manifest將是必不可少的
(搞不懂MS為啥要這樣設(shè)置,所以與VS2003.NET不同了)
(后來想想,除了MS自己說的哪些冠冕堂皇的原因,至少這樣一來Linux的Wine模擬要麻煩多了)

除非,你的程序是靜態(tài)鏈接的,沒有使用dll,只使用了操作系統(tǒng)核心的 Kernel32.dll, User32.dll, Ole32.dll, 或ShDocVW.dll 等
project的設(shè)置必須是Use Standard Windows Libraries、Not Using ATL、No Common Language Runtime support
那么你可以不需要考慮Manifest 可以關(guān)掉它

VS2005中Menifest相關(guān)的設(shè)置:
Project/Properties/Linker/Manifest File/Generate Manifest?? 決定是否生成Manifest,如上情況才可以關(guān)閉
Project/Properties/Linker/Manifest File/Allow Isolation????????這個(gè)是設(shè)置DLL的調(diào)用的,并不能決定Manifest是否還是必須的
Project/Properties/Manifest Tool/Input and Output/Embed Manifest? 決定Manifest是個(gè)單獨(dú)的文件還是嵌入到exe內(nèi)的資源

【對(duì)于我來說,使用SDL必須是啟用DLL的動(dòng)態(tài)鏈接方式,所以必須開啟Manifest,并且讓Manifest Embed進(jìn)入exe比較方便】
【與上面內(nèi)容相應(yīng)的 是關(guān)于如何發(fā)布軟件的問題,事實(shí)上只有VC6.0的CRT庫是綁定作為Windows的一部分的,之后從VS.net開始,VC程序制作安裝包也是要考慮庫文件的,只不過VC6.0時(shí)推薦拷入System32,VC.net時(shí)推薦放在exe文件local目錄,而現(xiàn)在VS2005則還需要考慮Manifest的問題了,看似麻煩,其實(shí)也還好,VS自帶工具打包,下面一些網(wǎng)址也有講如何手工做redistribution】

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VS2005 沒有找到MFC80D.DLL的解決方法
如何:將清單嵌入到 C/C++ 應(yīng)用程序
MFC 沒有找到MFC80D.DLL的解決方法
何勇的日志
VS2005 應(yīng)用配置不正確 清單(manifest) R6034
應(yīng)用程序配置不正確,程序無法啟動(dòng)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服