2017-02-20 56 views
0

我想從我的應用程序文件夾的子文件夾加載DLL。所以我把my.dll和所有依賴的DLL到/MyFolder中無法從WindowsXP上的子文件夾加載庫

我帶我一段時間才能找出正確的方式來加載它:

m_handle = LoadLibraryEx(".\\myfolder\\my.dll", 0, LOAD_WITH_ALTERED_SEARCH_PATH); 

它非常好於Windows 7 &及更高版本。但是,它返回錯誤998 ERROR_NOACCESS「對內存位置的訪問無效」。在Windows XP上。

但是從應用程序文件夾中加載這個DLL工作得非常好Windows上

PS的所有版本:我試圖用SetDllDirectory會與absoulte和相對路徑MyFolder文件,但在Windows XP仍然沒有成功

+0

Windows XP的支持已經結束了很長時間。爲什麼需要支持它的具體原因? – tambre

+0

它仍然有一個龐大的用戶羣,超過我的客戶的40% – Rem

+0

使用相對路徑可能依賴於當前的工作目錄,這通常是問題的來源。可能結合XP的LoadLibrary不處理相對路徑。您是否嘗試過使用完整路徑的LoadLibrary?或者使用SetDllDirectory和myfolder的完整路徑,然後使用LoadLibrary(「my.dll」)。 – stijn

回答

1

MSDN有這樣說的LOAD_WITH_ALTERED_SEARCH_PATH標誌:

如果使用這個值和lpFileName指定相對路徑, 行爲未定義

如果您不需要使用替換的搜索策略,你可以通過0作爲標誌參數。如果你真的需要這個標誌,那麼你必須先撥打GetFullPathName才能獲得絕對路徑。

相關問題