我试图将dll链接到vba项目,并且我要疯了,因为即使我对路径有100%的把握(我从确切位置粘贴了路径的100倍)也找不到它。 / p>
我打电话给
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本身就可以了...
答案 0 :(得分:0)
您的dll可能依赖于其他dll。您可以使用Dependency Walker获取相关dll的完整列表。 依赖的dll必须位于以下其中之一(来自msdn):
- 从中加载应用程序的目录。
- 系统目录。使用GetSystemDirectory函数获取 此目录的路径。
- 16位系统目录。没有函数可以获取 该目录的路径,但是会搜索它。
- Windows目录。使用GetWindowsDirectory函数获取 此目录的路径。
- 当前目录。
- PATH环境变量中列出的目录。 请注意,这不包括指定的每个应用程序路径 通过“应用路径”注册表项。在以下情况下,不使用“应用路径”键 计算DLL搜索路径。
如果您正在运行VBA项目,则可能Excel.exe
正在加载代码。这意味着API.dll
的从属dll必须位于上面引用中的目录之一中。
请注意,将dll放在系统目录中可能会影响系统中其他应用程序的功能。 (read about dll hell)。