#ifdef WIN32
         #define GFLEXTERN /*__declspec(dllexport)*/
         #define GFLAPI __stdcall
         #define GFLSTDAPI __cdecl
#else
         #define GFLEXTERN
         #define GFLAPI
         #define GFLSTDAPI
#endiftypedef unsigned long  GFL_UINT32; 
typedef void * GFL_HANDLE; typedef void *(GFLSTDAPI *GFL_ALLOC_CALLBACK)(GFL_UINT32 size, void *param); 
typedef GFL_UINT32 (GFLSTDAPI *GFL_READ_CALLBACK)(GFL_HANDLE handle, void *buffer, GFL_UINT32 size);

解决方案 »

  1.   

    define语句在c#中和c++是一样的,另外你还可以使用 /define 的编译器选项来达到相同的效果.但是c#中没有typedef.typedef void *(GFLSTDAPI *GFL_ALLOC_CALLBACK)(GFL_UINT32 size, void *param); 
    typedef GFL_UINT32 (GFLSTDAPI *GFL_READ_CALLBACK)(GFL_HANDLE handle, void *buffer, GFL_UINT32 size);这样的函数类型定义,在c#中对应delegate,大概是这样:
    delegate void GFL_ALLOC_CALLBACK(ulong size,object param);
    delegate ulong GFL_READ_CALLBACK(object handle,object buffer,ulong size);
      

  2.   

    typedef void (GFLSTDAPI *GFL_FREE_CALLBACK)(void *buffer, void *param); 那这个的c#函数原型又应该是怎样的呢?
      

  3.   

    jiezhi你如果在的话多帮帮忙,帮我看看里面的struct要怎么写?
    没学过c++,看这些都不明白在说什么typedef struct {
                     ... 
                     //这个struct里面的要怎么写
                     struct {
                                     GFL_READ_CALLBACK  Read; 
     
                                     GFL_ALLOC_CALLBACK Alloc; /* Not yet implemented */
                                     GFL_FREE_CALLBACK  Free;  /* Not yet implemented */
                                     void * AllocParam; 
                             } Callbacks; 
     
             } GFL_LOAD_PARAMS;
      

  4.   

    void*就是能指向任何类型的指针,那些函数类型的定义对应delegate
    你对应改改就可以了.
      

  5.   

    这里的 void * 用object替换好,还是IntPtr好?