当前位置:  开发笔记 > 开发工具 > 正文

为什么我的程序不能在Vista 64上找到它的DLL?

如何解决《为什么我的程序不能在Vista64上找到它的DLL?》经验,为你挑选了2个好方法。

我最近买了一台新笔记本电脑.不幸的是,它带有Vista.让它工作是一个很大的麻烦,并且comp有没有XP驱动程序的硬件组件,所以我不能"升级"到实际工作的操作系统.我大部分时间都在努力工作,但是一个特别奇怪的问题令我难过.

我安装了Delphi并尝试构建一个项目.它已编译,但不会运行."此应用程序无法启动,因为找不到sdl.dll." 很公平.所以我抓住SDL.dll并把它放在C:\windows\system32文件夹中.(使用Vista 64位家庭高级版.这是一个32位的dll,所以我把它放在32个文件夹而不是64个.)

再次点击运行.同样的问题.但为什么?它就在哪里,对吗?并且C:\windows\system32在系统路径中.任何人都知道为什么它无法链接到DLL?

(是的,我知道我可以通过将DLL放在与.exe相同的文件夹中来解决这个问题.我目前正在将其作为一种解决方法.但从长远来看,这是一个坏主意,因为我有一些都需要SDL的不同项目.)



1> Daniel Rikow..:

这不是Vista问题,而是64位Windows问题:名称System32真的令人困惑,但这实际上是系统(64位)DLL所在的文件夹.

所以在任何64位版本的Windows上......

...所有64位系统DLL都位于C:\ Windows\System32中.

...所有32位系统DLL都位于C:\ Windows\SysWOW64中.

名字来源于W¯¯ INDOWS ø Ñ W¯¯ INDOWS 64(WOW 64),其是在翻译层允许32个应用程序使用本地的64位的系统资源的名称.


更糟糕的是,当以32位仿真模式运行(运行任何win32二进制文件)时,程序中对C:\ Windows\System32的所有引用都将被静默重新连接以访问C:\ Windows\SysWOW64.这有时会导致win32 .exes出现奇怪的问题

2> Matt Lewis..:

Raymond Chen最近解决了为什么32位系统目录在64位Windows上很奇怪的基本原因.该条目的第一段确实是理解隔离的32位目录背后原因的关键:

在64位Windows上,32位程序在仿真层中运行...如果32位程序试图查看系统,它将看到32位系统.

我认为你必须有单独的目录来保持这些东西分离和工作.当您考虑WOW64意味着Windows On Windows 64位时,看起来反直觉的SysWOW64名称对于文件所在的目录是更有意义的,这就是上面提到的仿真器.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有