vb6.0调用自己用vc6.0写的dll为什么出错?
我用vc6.0写了一个动态库wave.dll,在vb6.0中调用。
在vb 的 module中有如下定义:
Private hInstWaveDll As Long
'//加载wave.dll
Public Function Load_WaveDll() As Boolean
Dim dwErr As Long
hInstWaveDll = LoadLibrary("Wave.dll")
If hInstWaveDll = 0 Then
dwErr = GetLastError()
Load_WaveDll = False
Else
Load_WaveDll = True
End If
End Function
'//释放wave.dll
Public Function Free_WaveDll() As Boolean
If hInstWaveDll = 0 Then
Free_WaveDll = True
Else
Free_WaveDll = FreeLibrary(hInstWaveDll)
hInstWaveDll = 0
End If
End Function
...
界面部分有如下定义:
Private Sub Form_Load()
If Load_WaveDll = False Then
MsgBox "加载Wave.dll失败,退出程序", vbInformation, "提示"
Unload Me
Exit Sub
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Free_WaveDll = False Then
MsgBox "卸载wave.dll失败,退出程序", vbInformation, "提示"
Exit Sub
End If
End Sub
...
第一次执行程序,完全正常。
Load_WaveDll()函数返回值为TRUE.
执行hInstWaveDll = LoadLibrary("Wave.dll")后
hInstWaveDll不等于0.
Free_WaveDll()函数返回值为TRUE.
第二次再执行程序,出错。现象为:
Load_WaveDll()函数返回值为FALSE。
Load_WaveDll()函数中 :
执行hInstWaveDll = LoadLibrary("Wave.dll")后
hInstWaveDll=0说明"Wave.dll"没有加载成功。
执行dwErr = GetLastError()后dwErr=0。
第二次再执行程序为什么"Wave.dll"加载不进来?