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"加载不进来?
...全文
31 点赞 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复

还没有回复,快来抢沙发~

发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告