我想创建一个C#项目,并实现已有的本地(C++)代码。有没有关于此方面的好教程可以推荐?
谢谢!
如果你的C++代码是托管的(正如你所说),那么我建议你保持它原来的C++代码格式,除非你有很充分的理由去改变它 -- 未来的C#(等等)程序集应该可以直接引用它。
MSDN上最好的起点是概述文章。
可能最简单的方法是创建一个C++/CLI项目,这将使您能够混合受控和非受控C++。然后,您可以使用托管的.Net包装器将现有的非托管C++类包装起来,以便您的C#代码可以直接调用。MSDN杂志上有一篇关于C++/CLI的入门文章。
Interop仅在调用C样式函数时真正有用。您无法真正使用它与纯C++类进行交互。
dotNetForm->Text = S"My Project"; // regular managed code
::SetWindowText(dotNetForm->Handle, "Your Project"); // mixed managed/unmanaged
而在C#中,你需要P/Invoke到SetWindowText——虽然你真的不需要这么做:这只是一个简单的例子,但你需要知道托管C++编译器是一种奇怪的组合,它会透明地为你执行大量的互操作,同时又什么都不为你做(即,它不会进行任何隐式的封送)。