2011-10-24 56 views
0

我想知道是否有一種方法顯式加載多個DLL實例(即使用LoadLibrary調用)。通常情況下,一個進程在調用LoadLibrary時只加載一次DLL(以便庫的一個副本駐留在進程的內存中),並且爲同一個庫完成的所有隨後的LoadLibrary調用將僅返回庫的相同句柄,由第一次通話返回。更具體地說,我希望能夠爲進程內部創建的每個線程加載一個單獨的DLL實例。目前,如果我在每個線程中執行LoadLibrary,我只會得到指向駐留在進程地址空間中的庫的單個實例的相同指針,並且實際上所有線程都指向庫中的相同函數(這裏發生了大混亂在我的應用程序)。相反,我希望每個線程都在單獨的內存空間中創建一個單獨的庫實例,以便在從庫中調用函數時線程不會互相干擾。如何在mfc中爲動態DLL加載多個實例

回答

0

我不認爲這是可能的(直到你創建一個新的進程並在該進程中加載​​DLL)。 DLL在進程級加載(因此在進程控制塊中有入口)。雖然您的DLL可以檢測是否在主機應用程序中創建了新線程,以便它可以在DLLMain方法中初始化TLS特定數據。

+0

Ankur:你能給一些樣本來解釋嗎? – karthik

+0

您可以參考DllMain文檔http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspx。特別是備註部分 – Ankur

+0

Ankur:我的目標是爲同一個dll創建多個實例。 – karthik