【问题标题】:Integrating a .NET C# program into a compiled (unmanaged) C++ program (without having to execute a separate .exe file)将 .NET C# 程序集成到已编译(非托管)C++ 程序中(无需执行单独的 .exe 文件)
【发布时间】:2012-11-15 17:34:26
【问题描述】:

我有一些 .NET C# 代码想要通过已编译(非托管)C++ 程序执行。

目前我所做的是将前者放入一个单独的 .exe 文件中,我从 C++ 程序中执行该文件。 (C++ 程序执行 .exe 文件,传入适当的参数,并将其输出捕获到变量中。)

这行得通。但是,执行一个单独的 .exe 文件会引入一些开销,而且开销是显而易见的——当 .exe 程序运行和完成时,人们会注意到半秒左右的间隙。

问题:有没有更好的方法来进行这种集成?比执行 .exe 更快的东西。

我在运行 Visual Studio 2010 的 Windows XP 上。

【问题讨论】:

  • 您应该能够使用本机 CLR 主机 API 执行此操作。
  • 您明白这 1 秒的差距可能仍然存在吧?
  • 如果您重复运行托管程序,您可能会发现将其重新设计为持久服务更有效。

标签: c# c++ windows visual-studio-2010


【解决方案1】:

您可能会发现此链接很有用:http://msdn.microsoft.com/en-us/library/x0w2664k.aspx

您可以创建包含本机代码和 .NET 代码的混合模式程序集。然而,这通常是使用 C++/CLR 完成的。

【讨论】:

    【解决方案2】:

    如果您的目标只是在 C# 项目中执行特定代码,您可以简单地将其构建为 dll 并将其作为引用添加到 C++ 项目中。从那里您可以随意执行部分 C# 代码库。

    这个问题using c# dll in project c++解释了如何在使用VC++编译的项目中使用C#程序集

    【讨论】:

      【解决方案3】:

      将 .NET 与 C++ 集成的另一种方法是通过 COM 接口。将 .NET 转换为 COM 组件。从 C++ 实例化和调用它们足够简单和快速。希望对您有所帮助。

      【讨论】:

        【解决方案4】:

        在我们的一个业务解决方案中,我们必须将非托管 c++ 应用程序连接到托管 c# 应用程序。 我们通过在非托管应用程序端创建一个混合模式“Wrapper”dll、一个托管 c#“客户端”dll 和一个带有 NamedPipe-Binding、托管 c# 应用程序的 WCF 服务来实现这一目标。

        非托管 c++ 应用程序调用包装器,它将请求重定向到 c# 客户端 dll。该 dll 建立与 c# 应用程序的 WCF 服务的连接,并在该服务上调用请求的方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-03
          • 2016-02-01
          • 1970-01-01
          相关资源
          最近更新 更多