天天看點

編譯器的那些事兒

1,/MD和/MDd将是潮流所趨,/ML和/MLd方式請及時放棄,/MT和/MTd在非必要時最好也不要采用了。

2,靜态連結 & 動态連結:

     靜态庫是把程式運作時需要使用的函數編譯在一個二進制檔案中,擴充名為.lib。當程式link時把靜态庫中的二進制資料和程式其它資料放到一起。程式運作時不在需要lib和dll檔案的支援。這樣做的壞處是開發出來的程式占用磁盤空間較大。特别是windows系統中本來就有或很多程式運作都需要的函數完全沒有必要每次開發程式時都要使用各自的靜态庫。

     動态庫在開發時僅是把dll中的函數名和參數放到應用程式中,應用程式運作時根據函數名和參數調用dll中的函數來運作,這樣作業系統中的應用程式可以同時使用同一個dll。可以有效地節省硬碟空間,當然這樣做使得程式設計更有層次。也有利于軟體工程師的分工和資訊安全。

   動态庫中也會産生一個字尾名為.lib的引入庫檔案。

3,自己配置debug環境:

  • C/C++ :/ 正常 :/ 附加包含目錄:添加依賴庫包含路徑
  • C/C++ :/ 正常 :/ 調試資訊格式:程式資料庫(/Zi)
  • C/C++ :/ 優化 :/ 優化:禁用(/Od)
  • C/C++ :/ 代碼生成 :/ 運作時庫:多線程調試DLL(/MDd)
  • 連結器 :/ 正常 :/ 輸出檔案:設定輸出目錄
  • 連結器 :/ 輸入 :/ 附加依賴項:添加項目依賴的庫名。
  • 連結器 :/ 調試 :/ 生成調試資訊:是(/DEBUG)

4,配置Release環境,隻說明一下與debug不同之處:

  • C/C++ :/ 正常 :/ 調試資訊格式:禁用
  • C/C++ :/ 代碼生成 :/ 運作時庫:多線程DLL(/MD)
  • 連結器 :/ 調試 :/ 生成調試資訊:否