DLL的原程序是用C写的. 在DLL文件, .h文件里面定义的数据结构WTLS_TERMINAL_MODE_BAG ,在C#调用的时候,编译不通过.
[DllImport("xWTLS.dll")] public static extern int WTLS_terminalMode(WTLS_TERMINAL_MODE_BAG *Bag);有两个问题,
1. 数据结构WTLS_TERMINAL_MODE_BAG ,没有找到, 怎么解决?
2. 在C#里面没有指针,这个问题怎么处理?

解决方案 »

  1.   

    找到WTLS_TERMINAL_MODE_BAG 结构体才是关键。..如果结构体可以为 null 或则一段空内存可以考虑使用IntPtr[DllImport("xWTLS.dll")] 
    public static extern int WTLS_terminalMode( IntPtr Bag); 
      

  2.   

    需要在C#中对应WTLS_TERMINAL_MODE_BAG结构,写一个C#的结构,例如:[StructLayout(LayoutKind.Explicit)]
    public struct RCV_HISTORY_STRUCTEx
    {
        [FieldOffset(0)]
        public int m_time;
        [FieldOffset(4)]
        public float m_fOpen;
        [FieldOffset(8)]
        public float m_fHigh;
        [FieldOffset(12)]
        public float m_fLow;
        [FieldOffset(16)]
        public float m_fClose;
        [FieldOffset(20)]
        public float m_fVolume;
        [FieldOffset(24)]
        public float m_fAmount;
        [FieldOffset(28)]
        public ushort m_wAdvance;
        [FieldOffset(30)]
        public ushort m_wDecline;
    }
      

  3.   

    有没有可能把C程序里面的结构,导出到DLL文件里面.然后在C#里面调用呢?
    C#里面是怎么处理C里面的指针问题的.
      

  4.   

    结构需要你自己事先声明.
    另外谁说C#没指针?
    声明好结构后你就能用指针了(unsafe代码)
    不过看你这情况应该直接传ref就行了.
      

  5.   

    http://topic.csdn.net/u/20090414/16/8c6e59af-bb47-4aab-9f01-6bc90f1d07c2.html