通过命名管道从c ++ exe向vb.net dll发送一个void指针

时间:2012-03-22 09:08:20

标签: c++ vb.net

我有一个c ++项目(exe)。我想让我的vb.net dll获取从c ++项目发送的数据。我想从c ++ exe向vb.net dll发送一个void指针。我必须通过命名管道发送它。任何正文都可以帮助我如何获得vb.net端的void指针并进行相应的转换。

提前致谢

1 个答案:

答案 0 :(得分:1)

如上所述。除非C ++是同一地址空间(相同的运行进程或“exe”)的一部分,否则您需要将数据从一个进程传输到另一个进程。这通常称为进程间通信(IPC),可以通过多种方式完成。这种事情有完整的框架。

如果您的C ++应用程序是.Net进程,您可以尝试远程处理。最简单的方法是创建一个在两个进程之间共享的程序集,并可以通过.net远程通过命名管道或TCP或任何您喜欢的方式进行通信。我做了很多次,虽然有它的缺点,但它是可行的。

如果您的C ++应用程序不是.Net,您可能会陷入困境,无法创建某种协议并在两个进程之间编组数据。或者,如果您只是尝试在.net应用程序中使用C ++库,您可以尝试创建一个C ++ .Net程序集(MS称之为IJW)。设置起来有点棘手,但效果相当好。这样做的好处是,您可以像调用主应用程序中的函数一样轻松编组数据。最大的缺点是C ++程序集不支持“CPU any”,因此任何引用C ++程序集的应用程序都必须匹配其32位或63位构建。