Visual Studio中的各種工程屬性設定經驗

2021-06-19 07:14:47 字數 1408 閱讀 6363

1.「工程屬性->配置屬性->c/c++->輸出檔案」中設定asm列表(彙編檔案)。注意一般選擇匯程式設計序輸出:無列表。當選擇無列表時注意asm列表位置的設定,如果asm列表位置指定的資料夾不存在,則每次編譯會建立新的資料夾,所以如果指定位置資料夾沒有其他內容的話就會導致每次都建立空資料夾。

2「工程屬性->配置屬性->常規」中的「輸出目錄」和「中間目錄」兩個目錄配置分別表示最終生成的exe/lib/dll所在的路徑和生成過程中obj等檔案所在路徑。配置需要注意的是路徑末尾要加"/"標識為目錄路徑,否則會在鏈結時產生警告:"warning msb8004: intermediate 目錄未以斜槓結尾。此生成例項將新增斜槓,因為必須有這個斜槓才能正確計算 intermediate 目錄."

3.「工程屬性->配置屬性-c/c++->高階」中的禁用特定警告來遮蔽一些特定編譯器警告,如果要遮蔽多個警告,就把它們編號用逗號分隔。

4"工程屬性->配置屬性->c/c++->**生成"中的「執行庫」選項控制程式對vc執行時庫的引用方式,其設定規則為:

(1)解決方案中的所有工程最好使用同一種執行庫引用方式,因為不同種執行庫引用方式會帶來不同庫(libcmt.lib和smvcrt.lib)的符號重複匯入,產生問題,需要通過複雜的忽略特定庫進行處理;

(2)對debug版本的程式使用/mtd或/mdd,這兩個分別是「靜態引用執行時庫的debug版本」和「動態引用執行時庫的debug版本」,對release版本的程式使用/mt或/md,這兩個分別是「靜態引用執行時庫的release版本」和「動態引用執行時庫的release版本」。注意這裡使用靜態引用執行時庫時要設定「忽略特定預設庫」增加msvcrt.lib,使用動態引用執行時庫要設定「忽略特定預設庫」增加libcmt.lib。(為了避免msvcrt.lib在windows上不同版本等問題應使用靜態引用執行庫的方法。)

5.「工程屬性->配置屬性->c/c++->高階」中的編譯為選項可以設定vs使用c或c++的編譯方式。tc/tp它們分別指定編譯器將所有檔案視為 c 原始檔 (/tc) 或 c++ 原始檔 (/tp),而不考慮它們在命令列上相對於選項的位置。預設情況下,cl 假定擴充套件名為 .c 的檔案是 c 原始檔,擴充套件名為 .cpp 或 .cxx 的檔案是 c++ 原始檔。

6.取消 strcpy strcpy_s 這些警告。

解決方法:

專案 --> 屬性 --> 配置屬性 --> c/c++ --> 預處理器 --> 預處理器定義 :_crt_secure_no_warnings 

再在標頭檔案中加入

#ifndef _crt_secure_no_warnings

#define _crt_secure_no_warnings 

#endif

未完待續ing...

Visual Studio中scanf s的使用

1.scanf在vs裡面已經棄用了,因為其對讀取輸入的空間沒有約束,容易造成記憶體越界的問題,建議使用scanf s代替。2.scanf s在讀取字串或字元輸入時需要在引數列表中新增長度約束,如 scanf s s stra,100 來限制其對記憶體的訪問 3.scanf s與scanf有同樣的輸入...

opencv在visual studio中配置

f program files opencv2.4.4 opencv build include f program files opencv2.4.4 opencv build include opencv f program files opencv2.4.4 opencv build incl...

Visual Studio中檢測記憶體洩漏的方法

visual studio中檢測記憶體洩漏的方法 include 可以定位到發生記憶體洩露 所在的檔案和具體那一行,用於檢測 malloc 分配的記憶體 define crtdbg map alloc include include 把分配記憶體的資訊儲存下來,可以定位到那一行發生了記憶體洩露。用於...