使用 MSYS 复制 System32 DLL 会破坏库的 64 位存在
Posted
技术标签:
【中文标题】使用 MSYS 复制 System32 DLL 会破坏库的 64 位存在【英文标题】:Copying System32 DLL using MSYS breaks the 64bit being of the library 【发布时间】:2013-11-25 09:18:52 【问题描述】:在 Windows 7 64 位下,来自 System32 的 *32.dll 是 64 位库(根据 Dependency Walker - depends.exe x64)。我注意到一个奇怪的问题是,在 MSYS Shell 中做 - 例如 - cp /c/System32/ws2_32.dll /c/mingw64/some/lib/libws2_32.dll
正在破坏/将 DLL 转换为 32 位文件(仍然根据 Dependency Walker)......通过 Windows 资源管理器复制/重命名它时保持它不变。 ..还是很奇怪。如果有人有解释...
还是我错过了一些关于cp
命令用法的内容...
注意:我已经尝试过--preserve=all
或--symbolic-link
等选项。
谢谢。
【问题讨论】:
【参考方案1】:cp
以某种方式(直接或由于您运行它的父进程)作为 32 位进程运行。 File System redirection 正在启动,您实际上是从 C:\Windows\SysWOW64
目录复制 ws2_32.dll
- 它已经作为 32 位 DLL 存在。
32 位应用程序可以通过将 %windir%\Sysnative 替换为 %windir%\System32 来访问本机系统目录。 WOW64 将 Sysnative 识别为特殊别名,用于指示文件系统不应重定向访问。
【讨论】:
好的,很好。cp $WINDIR"/Sysnative/ws2_32.dll" /d/some/dir/libws2_32.dll
为我工作(MSYS 是一个 32 位应用程序。)。谢谢你。以上是关于使用 MSYS 复制 System32 DLL 会破坏库的 64 位存在的主要内容,如果未能解决你的问题,请参考以下文章
怎么将dll的文件复制替换到C:\windows\system32 win7
受病毒感染的system32\dmserver.dll被删除后如何替换?
电脑开机显示“windows root\system32\hal.dll 丢失或损坏”怎么解决?