读书人

vb转vb.net addressof报错

发布时间: 2012-04-23 13:17:38 作者: rapoo

求助:vb转vb.net addressof报错
'回调函数指针传入
Public Function PtrToLong(ByVal func As Integer) As Integer
PtrToLong = func
End Function

'初始化回调函数
Public Sub IniFunc(ByVal lLoginID As Integer, ByVal pchDVRIP As Integer, ByVal nDVRPort As Integer, ByVal dwUser As Integer)
Form1.Text1.Text = CStr(lLoginID)
End Sub

bInited = CLIENT_Init(PtrToLong(AddressOf IniFunc), 0) '初始化SDK

--------------------------------------
在vb中这样写没问题,但是转成vb.net后,报错错误 “AddressOf”表达式不能转换为“Integer”,因为“Integer”不是委托类型。
从网上查资料,说是vb.net使用addressof函数时,必须是委托类型。小弟刚开始接触vb和vb.net,对这些都不熟悉,希望大侠能够帮忙看看,这段该如何写。谢谢了。



[解决办法]
API 定义修改成:
Declare Function CLIENT_Init Lib "xxx.dll"(CallBack As CLIENT_InitCallBackDelegate, someParam As Integer) As Integer

定义委托:
Public Delegate Function CLIENT_InitCallBackDelegate(ByVal func As Integer) As Integer

修改:
bInited = CLIENT_Init(PtrToLong(AddressOf IniFunc), 0)
=>
bInited = CLIENT_Init(AddressOf IniFunc, 0)

这些就不要了。
Public Function PtrToLong(ByVal func As Integer) As Integer
PtrToLong = func
End Function


[解决办法]
Public Sub IniFunc(lLoginID As Integer, pchDVRIP As Integer, nDVRPort As Integer, dwUser As Integer)
Delegate Function CLIENT_InitCallBackDelegate(func As Integer) As Integer

参数不同。。。

读书人网 >VB Dotnet

热点推荐