2011-10-14 26 views
0

當我們想要使用Win32 API時,我們將指定具有我們要使用的API函數的導入庫。例如,如果我想使用HttpCreateServerSession函數創建服務器會話,則需要在鏈接器輸入設置中指定httpapi.lib爲什麼Win32導入庫是所有發佈版本?調試版本在哪裏?

爲什麼沒有httpapi_d.lib(調試版本)?爲什麼我們可以在我們的調試版本項目中使用Win32發行版本導入庫,而沒有任何編譯/鏈接警告/錯誤?

通常,當我們實現一個DLL時,我們將爲想要使用我們的DLL的人創建導入庫的調試版本和發行版本。爲什麼微軟只能提供發行版本?謝謝。

+0

正如Raymond在我刪除的問題中指出的那樣,您可以從MSDN安裝已檢查(調試)的Windows版本。 –

回答

2

導入庫僅包含函數存根,因此不需要任何調試符號(如果鏈接到不同的調試DLL,則會有不同的庫 - 但通常不會,即使您將程序構建爲Debug版本)。如果您需要系統DLL的調試符號,請使用MS符號服務器(有關如何參閱WinDbg文檔)。

此外,鏈接「調試DLL」與「發佈程序」不是鏈接器錯誤,因爲在此級別不存在「調試」和「發佈」概念(您可能會遇到與不同ABI有關的錯誤,但這不完全相同)。

相關問題