讀書筆記 執行庫

2021-08-26 09:48:19 字數 1613 閱讀 2392

編譯期的檢查主要是程式的靜態特徵,很難發現執行過程中出現的錯誤。為了發現這類錯誤,編譯器還設計了執行期檢查的功能。編譯器的執行庫(run-time library)是支援執行期檢查的載體。

c/c++執行庫:

為了增強程式語言的能力,加快軟體的開發速度,幾乎所有程式語言都定義了相配套的函式庫或類庫,比如c標準定義的標準c函式,c++標準定義的c++標準類庫,這些庫被稱為支援庫(support library)。

當程式使用了乙個支援庫,那麼支援庫就是它們執行的必要條件,所以支援庫有時也被稱為執行庫( run-time library)。以vc編譯器為例,它同時提供了支援c語言的c執行庫和支援c++語言的c++標準庫。

c語言標準(ansi/iso c)定義了一系列常用的函式,稱為標準c庫函式。c標準定義了c庫函式的原型和功能,但沒有提供實現,這個任務留給了編譯器。每個編譯器實現的通常是標準c函式庫的乙個超集,一般稱為c支援庫或c執行庫(c run-time library),簡稱crt。

c支援庫包含了從記憶體分配,錯誤處理,字串處理,浮點計算,資料型別轉換,檔案和輸入輸出等方面的大量函式,這些函式有些是c標準所定義的標準c函式,有些是針對windows作業系統而特別設計的,並不屬於標準c函式。

crt在vc6的預設目錄是c:\program files\microsoft visual studio\vc98\crt\src\, 對於vc8,其預設位置時c:\program files\microsoft visual studio 8\vc\crt\src

c++ 標準庫

與c標準類似,c++的國際標準(iso c++)也是既包含c++語言本身的定義,又規定了c++標準庫德內容。c++標準庫是為了方便使用c++語言程式設計而設計的一套函式,常量,類和物件庫,包括標準輸入輸出,字串,容器(列表,佇列,map等),排序和搜尋演算法,數**算等。

c++標準庫由三大部分組成,第一部分是c標準庫,第二部分是io流(iostream),第三部分是標準模板庫(standard template library),即stl。

鏈結執行庫

為了滿足不同情況的需要,編譯器的執行庫通常有多個版本,編譯器通常將大多數除錯支援只放在除錯版本的支援庫中。

為了使編譯好的程式可以順利執行,使用執行庫德程式在執行時必須可以找到庫中的函式,實現這一目的有兩種方法,一種是靜態鏈結,另一種是動態鏈結。

簡單來說,靜態鏈結就是將程式所使用的支援庫中的函式複製到程式檔案中,這樣這些支援庫函式的實現就位於程式模組中,成為本模組中的**,所以產生的檔案程式會比較大。

動態鏈結是利用動態鏈結庫技術,在程式執行時再動態地載入包含支援函式的動態鏈結庫(dll),並更新程式的iat表,使程式可以順利地呼叫dll中支援的函式。

可以通過編譯器選項來設定鏈結支援庫的方式,/mt開關代表靜態鏈結,/md代表動態鏈結,/mtd, /mdd表示鏈結的是debug的庫。vc6支援庫還配有不帶多執行緒支援的版本,如果要使用這個版本,就必須使用選項/ml或mld,兩者都是靜態鏈結。vc8不再支援單執行緒版本的支援庫和選項,也就是說,vc8只提供了帶有多執行緒支援的支援庫。

lib 檔案

無論是靜態鏈結還是動態鏈結,都離不開lib檔案。vc編譯器的lib目錄(c:\program files\microsoft visual studio 8\ vc\lib\)包含了鏈結庫所需的各種lib檔案。

mysql vc執行庫 VC 執行庫安裝

vc 執行庫 visual c 可再發行程式包 是執行使用相應版本的 visual c 開發的應用程式時必要的元件。wampserver內建的apache mysql mariadb和php就依賴vc 執行庫,所以我們需要在電腦上安裝好vc 執行庫,否則無法正常使用wampserver。wampse...

執行庫實現

堆的實現 io與檔案操作 字串相關操作 格式化字串 helloworld程式無須用到的功能就不實現,比如異常 盡量簡化設計,盡量符合c 標準庫的規範 對於可以直接在標頭檔案實現的模組盡量在標頭檔案中實現,以免諸多的類 函式的宣告和定義造成 量膨脹,不便於演示 執行庫 要做到可以在windows和li...

C執行庫 二

任何乙個c程式,它的背後都有一套龐大的 來進行支撐,以使得該程式能夠正常執行。這套 至少包括入口函式,及其所依賴的函式所構成的函式集合。當然,它還理應包括各種標準庫函式的實現。這樣的乙個 集合稱之為執行庫 runtime library 而c語言的執行庫,即被稱為c執行庫 crt 如果擁有visua...