2010-04-16 57 views
0

我在寫一個可以重新分配的Win32 DLL庫。我使用不同版本的Windows API,因爲我想支持Windows 7功能,但仍支持Windows 2000(禁用某些功能)。我目前使用的是MyLib2000.dll,MyLibXP.dll和MyLibVista.dll,我的應用程序選擇在運行時加載哪個庫。我想要一種方法來擁有一個單獨的DLL(MyLib.dll),它可以將其他三個DLL存儲在其本身中,並且在加載時會將正確的DLL從其自身中提取出來並加載它。使用單個DLL庫在運行時導入其他庫

我知道這不是最好的方式來做到這一點,所以對另一種做法的建議是值得歡迎的。

回答

1

使用延遲加載並實現dliNotePreLoadLibrary通知掛鉤來加載您的DLL的正確版本。鏈接器提供的延遲加載邏輯然後將從您加載的DLL中提取所有函數。

http://msdn.microsoft.com/en-us/library/z9h1h6ty(v=VS.100).aspx

或者使用延遲加載和執行你的函數調用可能無法加載(因爲它沒有對舊的操作系統存在)的任何函數之前,檢查操作系統版本。

+0

這看起來像解決我的問題。我會研究它,但如果我能看到一些示例代碼,我會很感激。 – Yifan 2010-04-17 01:31:29

+0

這可能是您正在尋找的示例類型:http://www.codeproject.com/KB/DLL/delayloaddll.aspx – 2010-04-17 02:41:22

相關問題