50

有没有办法加载 32 位 DLL 库(与 LoadLibrary 的用法相同)我想将该函数与 GetProcAddress 一起使用。

我查看了 WOW,但它似乎没有提供该功能。该功能应该存在,因为像 DependencyWalker 这样的工具能够读取 32 位 dll 的符号,即使它是 64 位的。

谢谢

4

3 回答 3

59

当您将 dll 作为数据文件加载时,您只能将 32 位 DLL 加载到 64 位进程中。您无法执行代码。( http://support.microsoft.com/kb/282423 )

Microsoft 建议您使用进程间 COM 将 32 位代码与 64 位应用程序一起使用。这是一篇解释该过程的文章。

于 2010-02-15T09:59:02.510 回答
7

如果您只想从中获取资源,则可以作为数据文件加载:

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE);

然后FindResource正常调用。

于 2017-05-11T13:18:28.617 回答
3

读取 32 位可执行文件和在 32 位可执行文件中执行代码是有区别的。我不相信 Windows 提供任何功能来做到这一点。

您可能能够做到这一点的唯一方法是创建一个加载 dll 的 32 位进程,然后进行进程间通信以在两个进程之间传递结果。

于 2010-02-15T09:51:32.763 回答