当前位置:编程学习 > C#/ASP.NET >>

c#调用delphi的DLL时出现错误,请大家帮个忙。谢谢!

delphi dll代码:
 
PUser_StaticText = ^TUser_StaticText;
  TUser_StaticText = packed record
    chContent:      PChar;          //显示内容
    BkColor:        TLEDColor;      //背景颜色
    PartInfo:       TUser_PartInfo; //分区信息
    FontInfo:       TUser_FontSet;  //字体设置
    UseLibMode:     Boolean;        //内码模式
  end;

function User_AddStaticText(User_Text: PUser_StaticText): Integer;stdcall; external 'DEV_D.DLL';

对应的C#

       [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
        public struct TUser_StaticText
        {
            public string chContent;
            // 显示内容
            public TLEDColor BkColor;
            // 背景颜色
            public TUser_PartInfo PartInfo;
            // 分区信息
            public TUser_FontSet FontInfo;
            // 字体设置
            [MarshalAs(UnmanagedType.Bool)]
            public bool UseLibMode;
            
        }
 
      [DllImport(LEDCardDLL, EntryPoint = "User_AddStaticText", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int User_AddStaticText (TUser_StaticText User_Text);


 通过以上翻译,最后在调用User_AddStaticText方法后出现
 “尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的错误提示。

该问题是出在哪个地方?


--------------------编程问答--------------------  有人帮忙吗? --------------------编程问答-------------------- ref TUser_StaticText User_Text试试吧
而且你结构中的类具体怎么定义的,也会影响的 --------------------编程问答--------------------
引用 2 楼 bdmh 的回复:
ref TUser_StaticText User_Text试试吧
而且你结构中的类具体怎么定义的,也会影响的


这种试过了 会出现  -------外部组件发生异常 错误。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,