当为32位exe加载32位库时,Windows 7 64位错误PATH

时间:2011-09-06 16:38:13

标签: windows-7 path 32bit-64bit

我有一个依赖于libeay32.dll的exe。两者都编译为32位。

我已将exe复制到C:\ Program files(x86)\ app \ bin,将dll复制到C:\ Program files(x86)\ app \ lib。 为确保正常工作,我已将C:\ Program files(x86)\ app \ lib添加到路径中。

在Windows 7 64位上,当我执行exe时,我找不到libeay32.dll错误。

将依赖性walker用于32位,该库正确位于C:\ Program files(x86)\ app \ lib。 使用sysinternal进程资源管理器正确执行应用程序。 使用cmd也有效。 使用64位的依赖性walker,我可以看到丢失的库。 将这两个文件复制到或者复制到syswow64也可以很好地工作。

如果应用程序编译为32位......

为什么没有窗户寻找32位库? 如果目录已经在路径上,为什么不解析库?

我的猜测是w7忽略了路径,但根据这个: http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx 它不应该!。

为什么我无法使用位于路径上的依赖项运行我的exe? 我应该注册图书馆吗?

非常感谢任何想法。

修改

程序在从开始菜单 - >程序完成后正确启动/执行,但不能直接在.exe ... wtf?

使用procmon似乎试图打开(注意缺少“”):   “C:\ Program Files(x86)\ myapp \ Third-Party \ openssl \ LIBEAY32.dll” 但在路径上它是正确的(重新检查:“C:\ Program Files(x86)\ myapp \ Third-Party \ openssl”)

ANSWER ?: 是否有一个已知的场景/错误,在路径上设置“C:\ Program Files(x86)”,主窗口尝试加载“C:\ Program Files(x86)”而不是 ????(请参阅使用procmon而不使用任何过滤器)

Windows 7 x64错误?

1 个答案:

答案 0 :(得分:0)

你可以将lib放到同一个目录中,因为它总是首先检查。如果找到它,则使用它。 在Windows 64位系统上,您可以(未尝试)将库移动到存储32位版本的SystemWOW64文件夹,但我建议使用第一个版本。