c/c++ 回调 c#代码

来源:互联网 发布:富士照片打印软件 编辑:程序博客网 时间:2024/05/19 17:25

c/c++回调c#委托:

worker.dll/main.h

extern "C"{     #define DLL __declspec(dllexport)    typedef void (__stdcall *Callback)(int);    DLL void DoWork(Callback callback);}


worker.dll/main.c

DLL void DoWork(Callback callback){    callback(1);}

c#  Program.cs

using System;using System.Runtime.InteropServices;class Program{    [UnmanagedFunctionPointer(CallingConvention.StdCall)]    delegate void Callback(int value);      [DllImport("worker.dll")]    public static extern void DoWork([MarshalAs(UnmanagedType.FunctionPtr)]Callback callbackPointer);      [STAThread]    static void Main(string[] args)    {        // define a callback delegate        Callback callback =            (value) =>            {                Console.WriteLine("callback = {0}", value);            };        Console.ReadKey(true);        // call DoWork in C code        DoWork(callback);         Console.WriteLine();        Console.ReadKey(true);    }}


ps:

托管代码捕捉非托管异常

System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute


http://msdn.microsoft.com/zh-cn/library/System.Runtime.InteropServices(v=vs.100).aspx

0 0
原创粉丝点击