1

我有一个帮助 DLL,我使用了很长时间,它的签名没有任何变化,我复制它以便system32在我的所有产品中使用它,现在我在它的导出列表中添加一个函数并编译它,一切看起来好的,我有一个包含指定函数的新 DLL。我的问题是当我将它复制到system32指定的函数时丢失了,看起来它会以某种方式从缓存中复制并加载一些旧版本,因此依赖于新函数的程序将失败!有谁知道是什么问题?

4

2 回答 2

2

您很可能拥有 64 位系统。您将文件复制到 64 位系统目录 system32。但是,由于文件系统重定向器,您的 32 位应用程序从 32 位系统目录 SysWOW64 加载它。

通过复制到 SysWOW64 解决问题。

你可能知道这一点,但无论如何我都觉得不得不说出来。系统目录属于系统,您不应该写入它。

于 2013-04-03T08:18:48.657 回答
0

使用此命令清除 dll 缓存。这已经在 Win XP 和 Win 7 上进行了测试。

sfc /purgecache

请注意,您需要成为管理员才能运行此命令或“以管理员身份运行”。不能 100% 确定这是否能解决您的问题。

于 2013-04-03T08:18:29.883 回答