VC編譯選項

2021-09-05 14:12:37 字數 733 閱讀 9180

今天練習vc編譯選項設定。現在有三個工程a、b和c;a和b是鏈結庫,c是exe的demo程式。b呼叫a,c呼叫b。

1.最初的編譯是:a、b編為動態庫,並生成lib,c包含這個lib,生成exe。

這樣是簡單的,c的專案設定link屬性頁、category為input的選項中,填入a與b的lib就可以了。

需要注意的是,在這裡用到了多執行緒,在c/c++屬性頁中、category為code generation的選項中,use run-time library需要選擇muiltithreaded。而debug版選擇對應的debug multithreaded。

微軟**上說,release版的run-time庫與debug版的run-time庫是不同的,所以當你在b中用release而呼叫的卻是a工程生成的debug版lib;或是在b中用debug而呼叫的卻是a工程生成的release版lib,將會有警告:

link : warning lnk4098: defaultlib "libcmt" conflicts with use of other libs; use /nodefaultlib:library

2.現改為:a編成靜態庫,b為動態庫,c只要包含b就可以了,不用a。

要讓a成為靜態庫,需要另起乙個工程,在vc建專案嚮導中選擇最後一項:static library,這樣在project的setting對話方塊中就沒有link屬性頁,取而代之的是lib屬性頁。

a生成好靜態的lib後,b只要引用該lib就可以了。

VC編譯選項

vc編譯選項 od 禁用優化 預設值 disable optimizations default ox 最大化選項。ogityb2 gs maximum opts.ogityb1 gs og 啟用全域性優化 enable global optimization oy 啟用框架指標省略 enable ...

VC編譯選項 MT MTd MD MDd

vc編譯選項 多執行緒 mt 多執行緒除錯 mtd 多執行緒 dll md 多執行緒除錯 dll mdd c 執行時庫 庫檔案 single thread static link ml libc.lib debug single thread static link mld libcd.lib mu...

VC編譯選項md mdd ml mt mtd

vc編譯選項 多執行緒 mt 多執行緒除錯 mtd 多執行緒 dll md 多執行緒除錯 dll mdd c 執行時庫 庫檔案 single thread static link ml libc.lib debug single thread static link mld libcd.lib mu...