Fortran Coder

查看: 2970|回复: 0

[混编] C#调用Fortran的dll,传递结构体

[复制链接]

10

帖子

3

主题

0

精华

入门

F 币
66 元
贡献
34 点
发表于 2022-3-13 11:02:11 | 显示全部楼层 |阅读模式
  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,传递单个结构体可以获取正确值,但是传递结构体数组的时候就会报错

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-16 16:59

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表