VB6 - 无法找到DLL

时间:2011-03-08 15:18:25

标签: windows dll vb6

我正在尝试使用命令

在VB6中加载DLL

Private Declare Function myFuncLib "myDLL.dll" (ByVal file_name_in As String, _ ByVal file_name_out As String) As Long

但是一旦我运行该程序,它会弹出一个文本框为“:”运行时错误:53找不到:myDLL.dll“

DLL放在项目的同一目录中。

如果我将myDLL.dll放在system32文件夹中,它可以工作,但我不想这样做,我想将dll放在项目的同一个文件夹中。

有没有办法解决这个问题?

由于

5 个答案:

答案 0 :(得分:7)

我的通灵能力预测你是从VB6 IDE运行的 - 因为内置的EXE 在app目录中找到DLL(与exe相同的目录)。

  • 当您从VB6 IDE运行时,从应用程序目录中找到DLL ...但它认为app目录是包含VB6 IDE本身的目录:(
  • 一种解决方法是在尝试使用DLL之前将当前工作目录更改为VBP目录。例如。 Chdrive App.Path: Chdir App.Path(航空代码)
  • 编辑以下来自Beppe的评论。您可以尝试的另一种解决方法是,在您的开发计算机上,将DLL的副本放在安装VB6 IDE的同一目录中。可能C:\Program Files\Microsoft Visual Studio\VB98\您可以将带有内置EXE的DLL放在用户计算机/生产机器上。

答案 1 :(得分:0)

您需要先注册您的DLL ..

  

Shell“regsvr32.exe / s”&路径

其中“path”是DLL的路径..如果DLL放在同一目录中,则可以设置:

  

path = App.path& “/myDLL.dll”

答案 2 :(得分:0)

使用“取决于”

解决

DLL中存在不满意的依赖关系,但显然它是在第一个DLL入口点上返回错误。

谢谢大家

答案 3 :(得分:0)

声明对Kernel32.lib的引用SetDllDirectory函数:

Private Declare Function SetDllDirectory Lib "Kernel32" Alias     "SetDllDirectoryA" (ByVal path As String) As Long

然后按如下方式设置Dll目录:

SetDllDirectory App.path

答案 4 :(得分:0)

正如Beppe在their answer中所说,使用

Depends yourdll.dll

如果您使用其他DLLS?在他们的名字旁边,这意味着他们失踪了 通常它将是Microsoft C ++ Debug dll之一,即MSVCR120D.DLL