我想知道如何从 C++(Native,不是 C++ CLI)代码中调用一个 C# 类的方法?需要简单而优雅的方法。
CorBindToRuntimeEx()
或.NET 4中的CLRCreateInstance()
将CLR加载到本地进程中。Sasha Goldshtein是这方面的专家:
有几种方法可以实现: 1. 反向P/Invoke(必须从作为回调传递的.NET委托开始,因此只适用于“操作”始于您的.NET代码的情况); 2. COM互操作(每个.NET类也可以是COM对象,具有或不具有显式接口); 3. C++/CLI包装类。
请参见http://blogs.microsoft.co.il/blogs/sasha/archive/2008/02/16/net-to-c-bridge.aspx
另请参见:
http://www.gregcons.com/KateBlog/CallingManagedCodeFromNativeCode.aspx
最简单的方法是使用C++/CLI。如果您的代码无法使用它,请编写一个包装器dll并调用该dll。