windows相關檔案

2021-09-25 09:14:58 字數 2061 閱讀 2139

(registry,正體中文版windows作業系統稱之為登入檔)是microsoft windows中的乙個重要的資料庫,用於儲存系統和應用程式的設定資訊

是乙個包含可由多個程式同時使用的**和資料的庫

動態鏈結提供了一種方法,使程序可以呼叫不屬於其可執行**的函式

函式的可執行**位於乙個 dll 中,該 dll 包含乙個或多個已被編譯、鏈結並與使用它們的程序分開儲存的函式。多個應用程式可同時訪問記憶體中單個dll 副本的內容

c++程式在編譯後,在目標路徑下會生成多個檔案:

debug資料夾(.exe,.ilk,.obj,.pch,.pdb,.idb,,pdb),.cpp,.dsp,.ncb,*.plg

*.exe:是生成的可執行檔案

*.ilk:當選定漸增型編譯連線時,聯結器自動生成ilk檔案,記錄連線資訊

*.obj:是目標檔案,源程式編譯後的產物

*.pch:全稱是precompiled header,就是預先編譯好的標頭檔案

*.idb:檔案儲存的資訊,使編譯器在重新編譯的時候只重編譯最新改動過的函式和只對最新類定義改動過的原始檔進行重編譯,以提高編譯速度

*.pdb:全稱是program database,即程式資料庫檔案,用來記錄除錯資訊

*.dsp:(全稱是developer studio project)也是乙個配置檔案

*.ncb:(全稱no compile browser)的縮寫,其中存放了供classview、wizardbar和component gallery使用的資訊,由vc開發環境自動生成

*.plg:實際上是乙個超文字檔案,可以用internet explorer開啟,記錄了build的過程

*.cpp:就是c++源**檔案.

1.lib是和dll對應的。

lib是靜態的庫檔案,dll是動態的庫檔案。

所謂靜態就是link的時候把裡面需要的東西抽取出來安排到你的exe檔案中,以後執行 你的exe的時候不再需要lib。

所謂動態就是exe執行的時候依賴於dll裡面提供的功能,沒有這個dll,你的exe無法執行。

lib, dll, exe都算是最終的目標檔案,是最終產物。而c/c++屬於源**。源**和最終目標檔案中過渡的就是中間**obj,實際上之所以需要中間**,是你不可能一次得到目標檔案。

比如說乙個exe需要很多的cpp檔案生成。而編譯器一次只能編譯乙個cpp檔案。

這樣編譯器編譯好乙個cpp以後會將其編譯成obj,當所有必須要的cpp都編譯成obj以後,再統一link成所需要exe,應該說缺少任意乙個obj都會導致exe的鏈結失敗。

obj裡存的是編譯後的**跟資料,並且有名稱,所以在連線時會出現未解決的外部符號一說。當連成exe後便不存在名稱的概念了,只有位址。lib就是一堆obj的組合。

2.理論上可以,但實際中通常用lib。

3.編譯器會預設鏈結一些常用的庫,其它的需要你自己指定。

(1)lib是編譯時需要的,dll是執行時需要的。 如果要完成源**的編譯,有lib就夠了。 如果也使動態連線的程式執行起來,有dll就夠了。 在開發和除錯階段,當然最好都有。

(2)一般的動態庫程式有lib檔案和dll檔案。

lib檔案是必須在編譯期就連線到應用程式中的,而dll檔案是執行期才會被呼叫的。如果有dll檔案,那麼對應的lib檔案一般是一些索引資訊,具體的實現在dll檔案中。

如果只有lib檔案,那麼這個lib檔案是靜態編譯出來的,索引和實現都在其中。靜態編譯的lib檔案有好處:給使用者安裝時就不需要再掛動態庫了。

但也有缺點,就是導致應用程式比較大,而且失去了動態庫的靈活性,在版本公升級時,同時要發布新的應用程式才行。

(3)在動態庫的情況下,有兩個檔案,乙個是引入庫(.lib)檔案,乙個是dll檔案。

引入庫檔案包含被dll匯出的函式的名稱和位置,dll包含實際的函式和資料,應用程式使用lib檔案鏈結到所需要使用的dll檔案,庫中的函式和資料並不複製到可執行檔案中,因此在應用程式的可執行檔案中,存放的不是被呼叫的函式**,而是dll中所要呼叫的函式的記憶體位址。這樣當乙個或多個應用程式執行是再把程式**和被呼叫的函式**鏈結起來,從而節省了記憶體資源。

從上面的說明可以看出,dll和.lib檔案必須隨應用程式一起發行,否則應用程式將會產生錯誤。

Windows 時間相關

filetime結構體 typedef struct filetime filetime,pfiletime 在幫助文件中微軟給出了解釋 contains a 64 bit value representing the number of 100 nanosecond intervals since...

windows訊息相關

1.sendmessage返回值不能直接返回訊息函式的返回值 解決方法 在訊息對應返回之前呼叫setwindowlong hdlg,dwl msgresult,iret 2 sendmessage與postmessage的區別 先來看看send與post這兩個英文單詞的意思 send有傳送的意思,而...

Windows共享相關

客戶端 1 檢視本機的共享目錄。1 cmd命令 net share 2 gui方式,以win7為例,檢視方式為 計算機 管理 計算機管理 本地 系統工具 共享資料夾 共享 2 切換使用者。1 活用net use命令來切換區域網共享使用者 客戶端 1 2 3 net use 192.168.0.88 ...