#pragma comment

compiler

放置 編譯器的版本或者名字到一個對象文件,該選項是被linker忽略的。

exestr

在之後的版本將被取消。

lib

放置一個庫搜索記錄到對象文件中,這個類型應該是和commentstring(指定你要Linker搜索的lib的名稱和路徑)這個庫的名字放在Object文件的默認庫搜索記錄的後面,linker搜索這個庫就像你在命令行輸入這個命令同樣。你能夠在一個 源文件中設置多個庫記錄,它們在object文件中的順序和在源文件中的順序同樣。若是默認庫和附加庫的次序是須要區別的,使用Z編譯開關是防止默認庫放到object模塊。

linker

指定一個鏈接選項,這樣就不用在命令行輸入或者在 開發環境中設置了。
只有下面的linker選項能被傳給Linker.
/DEFAULTLIB ,/EXPORT,/INCLUDE,/MANIFESTDEPENDENCY, /MERGE,/SECTION
(1) /DEFAULTLIB:library
/DEFAULTLIB 選項將一個 library 添加到 LINK 在解析引用時搜索的庫列表。用 /DEFAULTLIB指定的庫在命令行上指定的庫以後和 .obj 文件中指定的默認庫以前被搜索。忽略全部默認庫 (/NODEFAULTLIB) 選項重寫 /DEFAULTLIB:library。若是在二者中指定了相同的 library 名稱,忽略庫 (/NODEFAULTLIB: library) 選項將重寫 /DEFAULTLIB: library
(2)/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]
使用該選項,能夠從程序導出函數,以便其餘程序能夠調用該函數。也能夠導出數據。一般在 DLL 中定義導出。 entryname是調用程序要使用的函數或數據項的名稱。ordinal 在導出表中指定範圍在 1 至 65,535 的索引;若是沒有指定 ordinal,則 LINK 將分配一個。 NONAME關鍵字只將函數導出爲序號,沒有 entryname
DATA關鍵字指定導出項爲數據項。客戶程序中的數據項必須用 extern __declspec(dllimport)來聲明。
有三種導出定義的方法,按照建議的使用順序依次爲:
源代碼中的 __declspec(dllexport).def 文件中的 EXPORTS 語句LINK 命令中的 /EXPORT 規範全部這三種方法能夠用在同一個程序中。LINK 在生成包含導出的程序時還建立 導入庫,除非生成中使用了 .exp 文件。
LINK 使用 標識符的修飾形式。 編譯器在建立 .obj 文件時修飾 標識符。若是 entryname以其未修飾的形式指定給 連接器(與其在 源代碼中同樣),則 LINK 將試圖匹配該名稱。若是沒法找到惟一的匹配名稱,則 LINK 發出 錯誤信息。當須要將 標識符指定給 連接器時,請使用 Dumpbin 工具獲取該標識符的修飾名形式。
(3)/INCLUDE:symbol
/INCLUDE 選項通知 連接器將指定的符號添加到 符號表
若要指定多個符號,請在符號名稱之間鍵入逗號 (,)、分號 (;) 或空格。在命令行上,對每一個符號指定一次 /INCLUDE:symbol。
連接器經過將包含符號定義的對象添加到程序來解析 symbol。該功能對於添包含不會連接到程序的庫對象很是有用。用該選項指定符號將經過 /OPT:REF 重寫該符號的移除。
咱們常常用到的是#pragma comment(lib,"*.lib")這類的。#pragma comment(lib,"Ws2_32.lib")表示連接Ws2_32.lib這個庫。 和在工程設置裏寫上鍊入Ws2_32.lib的效果同樣,不過這種方法寫的 程序別人在使用你的代碼的時候就不用再設置工程settings了
相關文章
相關標籤/搜索