vb6.0调用自己用vc6.0写的dll为什么出错?

chunbaoqi 2003-01-14 02:27:46
我用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"加载不进来?
...全文
51 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧