none
VB.NET 引用 Cpp dll 问题 RRS feed

  • 问题

  • 一款仪器的通讯先要获取handle

    我在设备SDK的.h文件内发现这个

    typedef void(* Ptr_DeviceEventHandler)

    (int32 eventCode,

    uint32 jobID,

    uint32 currentPageNumber,

    uint32 measuredCounts

    );

    现在我想要在VB.net内使用这个命令,应该如何调用?

    谢谢!

    Elvis

    2016年6月15日 1:07

答案

  • 这个是C语言定义的函数指针,一般来说应该是在事件发生后调用一个自定义的函数,所以一般也是另一个函数的参数。

    在VB.NET 中使用Delegate来对应函数指针,如下。

    Public Delegate Sub DeviceEventHandler(eventCode As Int32, jobID As UInt32, currentPageNumber As UInt32, measuredCountsSub As UInt32)

    使用的时候,在需要的地方使用AddressOf关键字,后面加上你按照这个定义写的函数名就可以了。


    • 已建议为答案 Albert_Zhang 2016年6月16日 3:21
    • 已标记为答案 Elvis Bao 2016年6月18日 1:39
    2016年6月15日 5:06
  • Hi Elvis Bao,

    davy, yu 所说,函数指针是定义了一个类型,如int一样, 需要在C++ C 中作为参数类型使用。

    关于VB.NETdelegate的使用,可以参考如下的代码示例。

    https://msdn.microsoft.com/en-us/library/ms172879.aspx#Anchor_3

    Best Regards,

    Albert Zhang

    • 已标记为答案 Elvis Bao 2016年6月18日 1:39
    2016年6月16日 5:06

全部回复