我有一些.NET C#代码,我想通过编译(非托管)C ++程序执行。
目前我所做的是将前者放入一个单独的.exe文件中,我从C ++程序执行该文件。 (C ++程序执行.exe文件,传入适当的参数,并将其输出捕获到变量中。)
这很有效。但是,执行单独的.exe文件会带来一些开销,并且开销很明显 - 当.exe程序运行并完成时,会注意到半秒左右的差距。
问题:有没有更好的方法进行此类整合?比执行.exe更快的东西。
我在运行Visual Studio 2010的Windows XP上。
答案 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服务的连接,并在该服务上调用所请求的方法。