首页 > 解决方案 > VBA 找不到特定的 dll

问题描述

我正在尝试将 dll 链接到 vba 项目,但我要疯了,因为即使我 100% 确定路径(我从确切位置粘贴了 100 倍路径),它也无法找到它。

我打了电话

Private Declare Function IMB_connect _
    Lib "C:\Users\Andrea.GIORDANO\Desktop\API\bin_dynamic\API.dll" _
                    (ByVal n As String) As Long

但它继续向我返回错误 53:找不到文件。

我不明白看起来如此愚蠢的问题是什么......我尝试了各种斜线'\','\','/','//':没有成功。

仅供参考,我在 c++ 项目中链接了相同的完全相同的 dll,在这种情况下运行良好,所以我相信 dll 本身很好......

标签: vbadll

解决方案


您的 dll 可能依赖于其他 dll。您可以使用Dependency Walker获取依赖 dll 的完整列表。依赖的 dll 必须位于以下之一(来自msdn):

  1. 加载应用程序的目录。
  2. 系统目录。使用 GetSystemDirectory 函数获取该目录的路径。
  3. 16 位系统目录。没有函数获取这个目录的路径,但是被搜索了。
  4. Windows 目录。使用 GetWindowsDirectory 函数获取该目录的路径。
  5. 当前目录。
  6. PATH 环境变量中列出的目录。请注意,这不包括 App Paths 注册表项指定的每个应用程序路径。计算 DLL 搜索路径时不使用 App Paths 键。

如果您正在运行 VBA 项目,则可能Excel.exe正在加载您的代码。这意味着您的依赖 dllAPI.dll必须位于上面引用的目录之一中。请注意,将 dll 放在系统目录中可能会影响系统中其他应用程序的功能。(阅读有关 dll 地狱的信息)


推荐阅读