Fortran Coder

标题: C#调用Fortran的dll,传递结构体 [打印本页]

作者: kuangshenzk    时间: 2022-3-13 11:02
标题: C#调用Fortran的dll,传递结构体
  Fortran中定义的结构体
   !对象信息
    type ObjectInfo
        sequence
        character(len=16):: ObjName     !对象名称
        integer(kind=4):: ObjState      !对象状态 0(正常) 1(抛弃) 2(删除)
        integer(kind=2):: ObjProperty   !对象属性 1(通道对象) 2(表对象) 3(流对象)
        integer(kind=2):: ObjSonProperty!对象子属性
        integer(kind=4):: ObjOffsetD    !对象数据体偏移量
        integer(kind=4):: ObjBlockNumber!对象数据体占用磁盘的块数
        integer(kind=4):: ObjCreateTime !对象产生的时间
        integer(kind=4):: ObjEditTime   !对象修改的时间
        character(len=32):: Other       !保留字节
    end type ObjectInfo   
C#中定义的结构体
    /// <summary>
    /// 对象信息
    /// </summary>
    [StructLayout(LayoutKind.Sequential,Pack =1)]
    public struct ObjectInfo
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public char[] ObjName;
        public int ObjState;
        public short ObjProperty;
        public short ObjSonProperty;
        public int ObjOffsetD;
        public int ObjBlockNumber;
        public int ObjCreateTime;
        public int ObjEditTime;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public char[] Other;
    }
问题 C#调用Fortran的dll,传递单个结构体可以获取正确值,但是传递结构体数组的时候就会报错






欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2