gpt4 book ai didi

windows - VBA 代码无法访问 System32 中的 DLL

转载 作者:可可西里 更新时间:2023-11-01 13:55:00 26 4
gpt4 key购买 nike

我的 VBA 代码无法访问我在 Windows 7 64 位和 Word 2010 32 位上的 C:\Windows\System32 文件夹中的 DLL。

Private Declare Function my_func Lib "mydll.dll" (ByVal param As String) As Long

Public Sub MyFuncTest
n = my_func("a")
End

我将 mydll.dll 复制到 C:\Windows\System32 并调用了 MyFuncTest,但收到类似“错误 53:‘mydll.dll’未找到”的错误消息。

但是,我将代码中的声明更改为:

Private Declare Function my_func Lib "C:\Users\myname\Documents\mydll.dll" (ByVal param As String) As Long

然后我将mydll.dll复制到我账户的Documents文件夹C:\Users\myname\Documents中,MyFuncTest成功执行。

在声明中将“mydll.dll”更改为“C:\Windows\System32\mydll.dll”无效。我尝试在同一 VBA 环境中使用 FileSystemObject#FileExists 方法访问 C:\Windows\System32\mydll.dll,但它返回 False(未找到)。

在 Windows XP 和 Word 2003 上没有问题。

有人能帮忙吗?

最佳答案

这是一个 32 位 DLL 和一个在 64 位 Windows 上的 WOW64 模拟器中运行的 32 位进程。 File redirection正在运行,因此当 32 位进程在 system32 中查找时,它实际上被重定向到 32 位系统目录 SysWOW64

简单快捷的解决方案是将 DLL 移动到 C:\Windows\SysWOW64。但是,正如 Cody Gray 在评论中指出的那样,不建议您将应用程序 DLL 放在系统目录中。通常的做法是将 DLL 放在程序文件目录中的应用程序文件夹中,并确保在需要加载 DLL 时该文件夹位于 DLL 搜索路径中。

关于windows - VBA 代码无法访问 System32 中的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069167/

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