2011-06-06 66 views
1

我想創建一個使用RAPI的.dll(使用C++)。爲此,我創建了visual studio項目,然後將其他包含目錄設置到需要「rapi2.h」的位置,並將其他鏈接目錄設置到rapi.lib所在的位置。在運行時需要lib包含的dll嗎?

然後我用我創建的.dll文件編寫另一個應用程序。此方法工作正常,但在運行時我需要rapi.dll存在於運行我的應用程序的計算機上。

有什麼辦法可以將.dll添加到另一個.dll中,而第一個在運行時不需要?

也許這是一個初學者的問題,但爲什麼我需要在運行時的DLL,但在編譯就足夠了只有.lib和.h關聯?

+0

'lib'並不意味着一個靜態鏈接 - 它可以用於靜態鏈接和動態鏈接。這僅僅是爲了解決參考。 – Mehrdad 2011-06-06 15:37:56

回答

2

您需要了解dynamic linking and static linking之間的區別。在你的情況下,該庫只是一個導入庫,並不包含實際的可執行代碼。這在運行時動態鏈接。

+0

我看了文章。事情現在更清楚了。我該如何使用visual studio進行靜態鏈接呢? – 2011-06-06 15:54:39

+0

如果提供靜態庫,則只能靜態鏈接。例如,如果有一個rapi.lib導入庫和一個rapi.lib靜態庫(包含rapi.dll中的代碼)。通常這不是在Windows上完成的。如果您正在調用的代碼僅在rapi.dll中,那麼除非您自己重寫所有導出的函數,否則別無選擇,只能使用該.dll。 – ribram 2011-06-06 15:58:42

+0

現在都清楚了,即使導入庫和靜態庫的區別也是如此。非常感謝! – 2011-06-06 16:01:49

相關問題