gpt4 book ai didi

windows - 某些 Windows DLL 显然如何同时支持 32 位和 64 位?

转载 作者:可可西里 更新时间:2023-11-01 11:45:30 24 4
gpt4 key购买 nike

我似乎能够访问 C:\WINDOWS\system32\opengl32.dll 中的函数(同样 C:\WINDOWS\system32\glu32.dll ) 来自 32 位或 64 位应用程序(为了它的值(value),我通过 ctypes 模块从单独的 32 位和 64 位 Python 2.7 解释器执行此操作)。

有了 glut32.dll,事情就不一样了。它只是作为 GraphViz 的 32 位安装的一部分出现在我的 Path 上。在 32 位 Python 中,我可以动态链接到它,但在 64 位 Python 中,我得到 [Error 193] %1 is not a valid Win32 application

现在,这个错误并不让我吃惊,因为我一直认为 DLL 必须在 Windows 上致力于一种或另一种体系结构(特别是,this recent question and its answers 似乎是这么说的)。令我惊讶的是第一种情况下没有错误... opengl32.dll 是如何做到的,以及在构建自己的 DLL 时如何复制这种行为?

最佳答案

在 64 位系统上,只有 64 位进程使用 c:\Windows\System32\opengl32.dll。对于 32 位进程,系统将 c:\Windows\System32\opengl32.dll 重定向到 c:\Windows\SysWOW64\opengl32.dll

File System Redirector

In most cases, whenever a 32-bit application attempts to access %windir%\System32, the access is redirected to %windir%\SysWOW64. Access to %windir%\lastgood\system32 is redirected to %windir%\lastgood\SysWOW64. Access to %windir%\regedit.exe is redirected to %windir%\SysWOW64\regedit.exe.

关于windows - 某些 Windows DLL 显然如何同时支持 32 位和 64 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46597620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com