0

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

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

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

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

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

4

4 回答 4

1

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

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

于 2012-11-15T17:41:17.533 回答
0

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

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

于 2012-11-15T18:45:25.290 回答
0

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

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

于 2012-11-15T18:07:44.797 回答
0

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

于 2012-11-15T18:15:56.287 回答