本帖最后由 huzhiqiang123456 于 2013-12-09 12:55:11 编辑

解决方案 »

  1.   

    是不是函数指针的声明也要用__stdcall例如
    typedef void (__stdcall LOG)(const char* sErr);以上代码来自,lz可以参考:
    http://social.msdn.microsoft.com/Forums/vstudio/en-US/660123f8-83e2-43b5-a2de-db96fbdc2f98/pinvoke-c-callback-from-c
      

  2.   

    Run-Time Check Failure #0 ?这个错误信息是不完全的吧?记得在委托上指明调用约定:        [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.Cdecl)]
            public delegate void TestD(Int32 iN);
      

  3.   

    这句typedef void (*PFunTest)(INT32 iN);改为typedef void (__stdcall *PFunTest)(INT32 iN);
      

  4.   

    又看了一下,确定了,C#的函数调用方式都是stdcall,返回时都是ret xxh, 而C里默认是cdecl
      

  5.   

    感谢大家的参与,特别谢谢LargeSkyMensk,你的答案是正确的!