2011-10-21 148 views

回答

31

在Windows上,您不直接與.dll文件鏈接–您必須使用隨附的.lib文件。要做到這一點,請轉至Project -> Properties -> Configuration Properties -> Linker -> Additional Dependencies並將.lib的路徑添加爲下一行。

您還必須確保該.dll文件是由%PATH%環境變量或複印件是Output Directory包含的目錄(默認情況下,這是Debug\Release你的項目的文件夾下)。

如果您沒有訪問.lib文件,一個選擇是使用過程中運行WINAPI功能,如LoadLibraryGetProcAddress手動加載.dll

+0

我也見過他們提及.h文件的地方。我們需要他們來完成這個過程嗎?我認爲它們不是必需的,因爲.lib文件包含了dll的所有信息。 – darkgaze

+0

@darkgaze我會認爲他們仍然需要,因爲.h文件通常包含所有的原型,聲明,常量,宏等。 –

19

您不要直接添加或鏈接到DLL,而是鏈接到由DLL生成的LIB。

LIB提供符號和其他必要數據,以便在代碼中包含庫(靜態鏈接)或引用DLL(動態鏈接)。

要與LIB鏈接,需要將其添加到項目「屬性」 - >「鏈接器」 - >「輸入」 - 「附加相關性」列表中。這裏的所有LIB文件將用於鏈接。您也可以使用雜注,像這樣:

#pragma comment(lib, "dll.lib") 

靜態鏈接,該代碼包含在你的可執行文件,並沒有運行時依賴。動態鏈接需要具有匹配名稱的DLL,並在the search path(即而不是只是路徑或系統目錄)中提供符號。

+2

關於靜態鏈接:我如何使Visual Studio將dll從某個目錄複製到構建(或鏈接)上的輸出? – Marcel

+2

@Marcel每個項目都提供了預生成,後生成和其他各種步驟(簽入項目設置)。你可以在那裏做一個文件拷貝,甚至可以運行一個完整的腳本(我有一個腳本,可以在git修訂版本ID中創建一個頭文件,並在生成之前增加內部版本號,然後將文件複製到後期的測試安裝中)。 – ssube

相關問題