从非托管c ++调用托管c#函数
如何从非托管c ++调用托管c#函数
或者使用我的一个项目 ,允许C#创建非托管导出。 这些可以像使用母语一样使用。
我首先使用COM互操作,但是现在我切换到IJW(它只是工作),因为它更简单。 我有一个包装器C ++ / CLR DLL(用/ clr编译)。
一个简单的例子(使用静态来使调用更容易):
namespace MyClasses { public class MyClass { public static void DoSomething() { MessageBox.Show("Hello World"); } } }
在DLL中我可以引用名称空间如下:
using namespace MyClasses;
并称之为:
__declspec(dllexport) void CallManagedCode() { MyClass::DoSomething(); }
现在你有一个非托管DLL导出“CallManagedCode”,它调用托管代码。
当然,您还必须在托管/非托管边界之间转换数据。 从VS2008开始,Microsoft包含一个marshal-helper,用于在非托管类型和托管类型之间进行转换。 请参阅http://msdn.microsoft.com/en-us/library/bb384865.aspx
我使用了这里描述的 C ++ / CLI包装器类,它实现起来相对容易。
RE:如何从非托管C ++应用程序调用托管C#代码?
从非托管C ++代码调用托管.NET C#COM对象…
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
在非托管C ++项目中包装托管C#DLL:dll。
http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html