該宏放置一個(gè)注釋到對(duì)象文件或者可執(zhí)行文件。
#pragma comment( comment-type [,"commentstring"] )
comment-type是一個(gè)預(yù)定義的標(biāo)識(shí)符,指定注釋的類型,應(yīng)該是compiler,exestr,lib,linker之一。
commentstring是一個(gè)提供為comment-type提供附加信息的字符串,
Remarks:
1、compiler:放置編譯器的版本或者名字到一個(gè)對(duì)象文件,該選項(xiàng)是被linker忽略的。
2、exestr:在以后的版本將被取消。
3、lib:放置一個(gè)庫搜索記錄到對(duì)象文件中,這個(gè)類型應(yīng)該是和commentstring(指定你要Liner搜索的lib的名稱和路徑)
這個(gè)庫的名字放在Object文件的默認(rèn)庫搜索記錄的后面,linker搜索這個(gè)這個(gè)庫就像你在命令行輸入這個(gè)命令一樣。你可以
在一個(gè)源文件中設(shè)置多個(gè)庫記錄,它們?cè)趏bject文件中的順序和在源文件中的順序一樣。如果默認(rèn)庫和附加庫的次序是需要
區(qū)別的,使用Z編譯開關(guān)是防止默認(rèn)庫放到object模塊。
4、linker:指定一個(gè)連接選項(xiàng),這樣就不用在命令行輸入或者在開發(fā)環(huán)境中設(shè)置了。
只有下面的linker選項(xiàng)能被傳給Linker.
-
/DEFAULTLIB
-
/EXPORT
-
/INCLUDE
-
/MANIFESTDEPENDENCY
-
/MERGE
-
/SECTION
(1)/DEFAULTLIB:library
/DEFAULTLIB 選項(xiàng)將一個(gè) library 添加到 LINK 在解析引用時(shí)搜索的庫列表。用 /DEFAULTLIB
指定的庫在命令行上指定的庫之后和 .obj 文件中指定的默認(rèn)庫之前被搜索。
忽略所有默認(rèn)庫 (/NODEFAULTLIB) 選項(xiàng)重寫 /DEFAULTLIB:library。如果在兩者中指定了相同的 library 名稱,忽略庫 (/NODEFAULTLIB:library) 選項(xiàng)將重寫 /DEFAULTLIB:library。
(2)/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]
使用該選項(xiàng),可以從程序?qū)С龊瘮?shù),以便其他程序可以調(diào)用該函數(shù)。也可以導(dǎo)出數(shù)據(jù)。通常在 DLL 中定義導(dǎo)出。entryname 是調(diào)用程序要使用的函數(shù)或數(shù)據(jù)項(xiàng)的名稱。ordinal 在導(dǎo)出表中指定范圍在 1 至 65,535 的索引;如果沒有指定 ordinal,則 LINK 將分配一個(gè)。NONAME 關(guān)鍵字只將函數(shù)導(dǎo)出為序號(hào),沒有 entryname。
DATA 關(guān)鍵字指定導(dǎo)出項(xiàng)為數(shù)據(jù)項(xiàng)。客戶程序中的數(shù)據(jù)項(xiàng)必須用 extern __declspec(dllimport) 來聲明。
有三種導(dǎo)出定義的方法,按照建議的使用順序依次為:
-
源代碼中的 __declspec(dllexport)
-
.def 文件中的 EXPORTS 語句
-
LINK 命令中的 /EXPORT 規(guī)范
所有這三種方法可以用在同一個(gè)程序中。LINK 在生成包含導(dǎo)出的程序時(shí)還創(chuàng)建導(dǎo)入庫,除非生成中使用了 .exp 文件。
LINK 使用標(biāo)識(shí)符的修飾形式。編譯器在創(chuàng)建 .obj 文件時(shí)修飾標(biāo)識(shí)符。如果 entryname 以其未修飾的形式指定給鏈接器(與其在源代碼中一樣),則 LINK 將試圖匹配該名稱。如果無法找到唯一的匹配名稱,則 LINK 發(fā)出錯(cuò)誤信息。當(dāng)需要將標(biāo)識(shí)符指定給鏈接器時(shí),請(qǐng)使用 Dumpbin 工具獲取該標(biāo)識(shí)符的修飾名形式。
(3)/INCLUDE:symbol
/INCLUDE 選項(xiàng)通知鏈接器將指定的符號(hào)添加到符號(hào)表。
若要指定多個(gè)符號(hào),請(qǐng)?jiān)诜?hào)名稱之間鍵入逗號(hào) (,)、分號(hào) (;) 或空格。在命令行上,對(duì)每個(gè)符號(hào)指定一次 /INCLUDE:symbol。
鏈接器通過將包含符號(hào)定義的對(duì)象添加到程序來解析 symbol。該功能對(duì)于添包含不會(huì)鏈接到程序的庫對(duì)象非常有用。用該選項(xiàng)指定符號(hào)將通過 /OPT:REF 重寫該符號(hào)的移除。
我們經(jīng)常用到的是#pragma comment(lib,"*.lib")這類的。
#pragma comment(lib,"Ws2_32.lib")表示鏈接Ws2_32.lib這個(gè)庫。
和在工程設(shè)置里寫上鏈入Ws2_32.lib的效果一樣,不過這種方法寫的
程序別人在使用你的代碼的時(shí)候就不用再設(shè)置工程settings了