पैरामीटर के साथ एसी # एप्लिकेशन एसी # -method के अंदर कॉलबैक को डेल्फी डीएल से कॉल किया जाना है: सी # विधि को कॉल किया जाता है, लेकिन int param सही ढंग से स्थानांतरित नहीं होता है: कुछ "यादृच्छिक" मान आता है।डेल्फी डीएल से सी # ऐप
सी # -method एक रजिस्टर विधि के माध्यम से डेल्फी dll को पारित कर दिया है:
type TCallback = procedure(val: integer);
var callback : TCallback;
procedure RegisterCallback(aCallback : TCallback; value: integer); stdcall;
begin
callback:= aCallback;
ShowMessage('Inside Delphi:'+ IntToStr(value)); // successful ("10")
callback(value); // ...and test callback
end;
exports
RegisterCallback;
क्या भी दिलचस्प है:
[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
}
और यहाँ डेल्फी कोड है कॉलबैक विधि हो जाता है दो बार बुलाया जाता है (दोनों बार "यादृच्छिक" मान आता है) हालांकि इसे कोड में केवल एक बार कहा जाता है। उसके बाद ऐप निकास कोड (0xc0000005) के साथ दुर्घटनाग्रस्त हो जाता है।
कोई विचार?
ओह, यह नहीं देखा कि यह पहले से ही gamecat द्वारा जवाब दिया गया था ... – bert