关于C# 调用Delphi 的dll

纯唇Yu弄 2019-04-19 09:11:34

function FuncA:Funcs;stdcall; //这个是dll 导出的函数 可以由C#调用的

//一个有 ABC 3个参数的委托? AB 是string类型的
callback= procedure(const A, B : PAnsiChar;C: Boolean );stdcall;

Funcs=record //C#里边的结构?
CL:procedure(p:callback);stdcall; //一个没有返回值的 参数是callback
S:functioin(const A,B:PAnsiChar):Boolean:stdcall;//一个返回bool有AB两个string参数的委托?
end;







C# 应该怎么调用这个dll?
大佬们 能不能根据上面的信息 给出 C#调用的代码?

...全文
295 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
纯唇Yu弄 2019-04-22
  • 打赏
  • 举报
回复
通过这篇文章 解决了 c#调用delphi写的dll遇到并解决的问题 给后来者一个参考

      [DllImport("H:\\API.dll", EntryPoint = "FuncA", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
      internal static extern void FuncA(IntPtr intPtr);

      public delegate void Callback(string a, string b, bool c);

      public delegate void CLMethod(Callback cb);

      public delegate bool SMethod(string a, string b);

      static void APICallBack(string a, string b, bool c)
        {
        }

     static void Main(string[] args)
        {
            try
            {
                Funcs funcs= new Funcs();
                int len = Marshal.SizeOf(funcs);
                IntPtr ptr = Marshal.AllocHGlobal(len);
                Marshal.StructureToPtr(funcs, ptr, true);
                FuncA(ptr);
                funcs= (Funcs )Marshal.PtrToStructure(ptr, typeof(Funcs ));
                Marshal.FreeHGlobal(ptr);
                funcs.CL(APICallBack);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();
        }

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
    public struct Funcs
    {
        public CLMethod CL;

        public SMethod S;
    }
纯唇Yu弄 2019-04-22
  • 打赏
  • 举报
回复
引用 2 楼 stherix 的回复:
尽量用标准的方式导出dll 这种方式的dll,其他语言会很难处理 如果直接导出CL和S,那就容易了
Delphi 是 第三方的东西 改不了 人家说这就是标准的 你直接调用就行了
stherix 2019-04-22
  • 打赏
  • 举报
回复
尽量用标准的方式导出dll 这种方式的dll,其他语言会很难处理 如果直接导出CL和S,那就容易了
lindexi_gd 2019-04-22
  • 打赏
  • 举报
回复
[c# 调用 delphi 做的DLL文件 - wjhl04的专栏 - CSDN博客](https://blog.csdn.net/wjhl04/article/details/82753731 )

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧