小编cha*_*151的帖子

我需要帮助理解如何在 vb.net 中使用 C++ typedef

我有两个问题;我相信第一个更容易的问题必须在第二个之前解决,所以我在这里只坚持那个。

首先,概述:我有一个使用 USB 端口的硬件设备,并且有一个自定义 DLL 可以与它​​通信。我正在使用 VB.net 从 C++ 升级。自定义 DLL 有许多函数,我已经能够为除一个之外的所有函数进行编程,使用 IntPtr 和 Marshalling 函数进行更简单的 DLL 调用;最后一个,这将是我的第二个问题/帖子,给我带来了问题。它是一种回调类型操作,并使用 TYPEDEF 定义。

所以,第一个问题:我如何转换

typedef void (WINAPI *MyFunctPtr)(unsigned char*,int, LPVOID)
Run Code Online (Sandbox Code Playgroud)

进入VB.net?我理解(我认为)这是定义一个名为 MyFunctPtr 的指针,它接受三个参数,并且是 VOID 的别名,这意味着它不会返回任何内容。这是正确的,我如何在 VB.net 中使用它?

typedef 的用法如下:

AddHandler(MyPtrType func,  LPVOID pParam);
Run Code Online (Sandbox Code Playgroud)

其中 AddHandler 是 DLL 调用(这将是我的第二个问题/帖子的主题,以及所需的 DECLARE 语句)。

为了追求这个主题,我查看了许多论坛和问答式讨论,但似乎没有一个专门解决这个问题(至少,我的无知不能说)。我确实在这个论坛中发现了一个与同一问题非常接近的主题(“在 .NET 中使用 C 回调函数”),但我知道的不够多;我什至不明白答案,更别提问题了!

正如我所指出的,这个问题还有第二部分:

1.此代码旨在通过 USB 与外部硬件设备进行通信。我成功地使用了许多其他函数,使用 DLL 调用和带 INTPTR 的封送处理。

2.但是这段代码需要的功能有些不同。从本质上讲,涉及四个方面的努力:

a) 通过执行 DLL 调用来响应“GoButton”点击,该调用将 CallBack 函数注册到外部设备(这是一个 DLL 调用,当然,传递对 CallBack 函数的引用。这会告诉外部硬件向何处发送它是发生适当事件时的数据)并产生第二个线程。

b) 作为新产生的第二个线程,通过执行 DLL 调用来响应,该调用实际上告诉外部硬件“OK,开始响应事件,并将数据发送到 CallBack”

c) 在第一个/原始线程中,通过执行 …

c++ vb.net

5
推荐指数
1
解决办法
1030
查看次数

标签 统计

c++ ×1

vb.net ×1