代码之家  ›  专栏  ›  技术社区  ›  dlanod

什么技术可以用于从本机进程调用C#进程?

  •  2
  • dlanod  · 技术社区  · 14 年前

    4 回复  |  直到 14 年前
        1
  •  4
  •   Jim Mischel    14 年前

    如果你想在两个进程之间进行通信,你有很多选择,正如rerun在他的回答中所说。您可以将共享内存(内存映射文件)和命名的同步对象(如信号量和事件)添加到他的列表中。我肯定还有其他人。

    如果你希望C++应用程序在C++应用程序中调用函数,那么你的选项就更有限了。WCF不是唯一的解决方案,甚至可能不是首选的解决方案。您可以将C#公开为COM接口。这里有一种方法。 http://support.microsoft.com/kb/828736

        2
  •  2
  •   GalacticJello    14 年前

    Apache Thrift :

    节俭是一个软件框架 可扩展的跨语言服务 发展。它结合了一个软件 使用代码生成引擎堆栈 在C++、java之间无缝连接, Python、PHP、Ruby、Erlang、Perl, 哈斯克尔,C#,可可,Smalltalk,和 奥卡姆。

    节约在2007年4月开放 2008年5月。

        3
  •  1
  •   rerun    14 年前

    仅举几个例子。基于文件、TCP/IP、管道、命名管道、邮件列表、MQ、windows消息,

        4
  •  1
  •   Kate Gregory    14 年前

    如果C++程序是“主管”,那么吉姆@提到的COM互操作可能是您唯一的选择。如果它是双向的,你也可以做“反向pCokes”(不是正式名称),其中C++代码将委托转换为函数指针,C++中的PInvokes A(扁平C样式)函数传递给函数指针,然后,C++代码使用函数指针运行任何委托方法,而C方法则位于委托的末尾。虽然这需要更多的管道,但它使您免去了COM互操作的性能影响。或者,如果你觉得很勇敢,你可以编写一个托管C++ + CLI类,它用通常的方式调用你的C++代码,并借助GCROOT & lt;&模板;从你的C++代码调用它。

    http://www.gregcons.com/KateBlog/CallingManagedCodeFromNativeCode.aspx 有指向第三种方式的博客条目的链接。 http://www.gregcons.com/KateBlog/IntroToCOMInterop.aspx 已经有4年历史了,有一篇MSDN文章的链接,对前两个选项进行了一些扩展。

    PS:Web服务作为在同一台机器上由同一个开发人员编写的两个程序之间进行通信的一种方式,几乎从来不是正确的答案。并不是说它不起作用,但如果你能控制两端,就有更快更容易的方法。