2010-02-15 147 views
28

是否有加載32位DLL庫(與LoadLibrary具有相同用法的東西)的方法我想將該函數與GetProcAddress一起使用。在64位應用程序中加載32位DLL庫

我看着WOW,但它似乎沒有提供功能。該功能應該存在,因爲像DependencyWalker這樣的工具能夠讀取32位DLL的符號,即使它的64位也是如此。

謝謝

+0

這是在這裏回答:http://stackoverflow.com/questions/128445/calling-32bit-code-from-64bit-process。 John Knoeller的答案也是正確的。 –

+0

https://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ – Ampere

+0

@John B. Lambe這篇文章的標題比你更清楚鏈接到那些正在搜索exe-call-dll的人。 – ebk

回答

40

對不起,但是你只能加載一個32位DLL到64位進程當你加載DLL作爲數據文件。你不能執行代碼。 http://support.microsoft.com/kb/282423

Microsoft建議您使用進程間COM使用64位應用程序的32位代碼。這裏有一篇文章解釋了這個過程http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/它不好玩。

+0

本文的最新鏈接:http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/參見http://stackoverflow.com/questions/128445 /主叫-32位碼從 - 64位處理 –

2

在32位可執行文件中讀取32位可執行代碼和執行代碼是有區別的。我不相信Windows提供任何功能來做到這一點。

你可能做到這一點的唯一方法是創建一個32位的進程,加載DLL,然後進行進程間通信以在兩個進程之間傳遞結果。

0

如果所有你想要做的就是從它的資源,你可以加載一個數據文件:

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE); 

然後調用FindResource正常。

相關問題