2016-07-27 38 views
0

當我要爲(SDLSimple DirectMediaLayer)設置開發環境時,我下載了網站提供的包,從readme.txt文件中發現我需要兩個.lib.dll ...爲什麼某些程序需要.lib和.dll這兩個工作...

我的問題是:

  1. 我不知道如果我的理解是正確的:在我的思想,.libwindows就像.alinux,是靜態庫.dll對於windows就像.so對於linux,是共享庫,這是正確的嗎?
  2. 如果上述想法是正確的,我認爲我們只能使用.lib.dll,因爲他們所做的工作是一樣的嗎?那麼爲什麼要在一個程序中同時獲得兩個
  3. 我不太瞭解.dll,如果我的內存服務器對我有好處,shared library的優勢之一是它們可以在問題運行時更新,那麼人們怎麼做到這一點,如果我們更新.dll文件, 如何運行程序瞭解.dll的更改並將其重新加載到內存?

回答

1

在VC中,有兩種類型的庫。

第一種類型是由「靜態庫項目」生成的「真實庫」,它包含您可以鏈接和運行的所有內容,而無需dll。

第二種類型是「導入庫」,由「dll項目」生成,它只包含link.exe所需的符號。你可以鏈接到庫,但你需要DLL來運行。

有兩種方法可以使用dll。鏈接到「導入庫」或「使用LoadLibrary API」。

當您加載dll時,您無法更改dll文件。

但是,如果您使用LoadLibrary加載DLL,您可以使用FreeLibrary卸載DLL,更改DLL,然後使用LoadLibrary加載新的DLL。當然,你需要監視一些東西來調用這個過程。

仍然更簡單的方法是,使用加載器來執行更新,然後加載真正的exe。

相關問題