因为项目需要,现要在C#中大量使用C语言头文件中定义的结构体和一些常量,而且其中一些结构体比较复杂,有嵌套结构也有嵌套结构体指针。如何在C#中简易使用它们呢?      如果用C#直接翻译那太复杂了,工作量会很大。有没有什么简单的方法来做呢?比如:用托管C++封装一道或者系列化之类的,可不可行?求教啊,在找不到合适的解决方案又要被修理了

解决方案 »

  1.   

    比较简单的是用C++/CLI写封装类或者把程序改成ActiveX
      

  2.   

    c++ struct Cs{int p;};-----c#[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
    struct Cs { public int p ;}
      

  3.   

    程序调用时全部当成byte[]或IntPtr处理,根据需要分析结构,通过Marshal.StructToPtr和Marshal.PtrToStruct处理指针.操作上还得具体问题具体分析,我是想不出通用解法了.
      

  4.   

    如果你有C或者C++头文件,以及提供的Lib文件,如果cpp文件也有,那最好不过.
    建议你用C++/CLI做二次封装,然后再提供给C#这一层级调用,会省去很多麻烦.