首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

vb转vb.net addressof报错

2012-04-23 
求助:vb转vb.net addressof报错回调函数指针传入Public Function PtrToLong(ByVal func As Integer) As I

求助: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

参数不同。。。

热点排行