将.NET C#程序集成到已编译(非托管)的C ++程序中(无需执行单独的.exe文件)

时间:2012-11-15 17:34:26

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

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

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

这很有效。但是,执行单独的.exe文件会带来一些开销,并且开销很明显 - 当.exe程序运行并完成时,会注意到半秒左右的差距。

问题:有没有更好的方法进行此类整合?比执行.exe更快的东西。

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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