小编ber*_*ert的帖子

从Delphi dll到C#app的回调

在ac#application中,带参数的ac#-method将从delphi dll中调用:调用C#方法,但int参数未正确传输:某些"随机"值到达.

C#-method通过寄存器方法传递给delphi dll:

    [UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    public delegate void ProcDelegate(int value);

    private static ProcDelegate procDelegate;

    [DllImport("CallbackTest.dll", CallingConvention = CallingConvention.StdCall)]
    public static extern void RegisterCallback(ProcDelegate callBackHandle, int value);


    public Form1()
    {
        InitializeComponent();

        procDelegate = new ProcDelegate(CalledFromDelphi);

        RegisterCallback(procDelegate, 10); // register in delphi dll


    }

    public static void CalledFromDelphi(int value)
    {
        MessageBox.Show("Value:" + value); // expect "10", but getting random value

    }
Run Code Online (Sandbox Code Playgroud)

这是delphi代码:

type TCallback = procedure(val: integer);
var callback : TCallback;
procedure RegisterCallback(aCallback : TCallback; value: integer); stdcall;
begin
  callback:= …
Run Code Online (Sandbox Code Playgroud)

c# delphi dll callback

6
推荐指数
1
解决办法
3261
查看次数

标签 统计

c# ×1

callback ×1

delphi ×1

dll ×1