Hallo zusammen
Wie der Titel andeutet brauche ich von meinem Delegat einen unverwalteten Funktionszeiger, der der __cdecl Aufrufkonvention genügt. Da mein Code bisher nicht funktioniert und ich keine genauen Angaben habe warum bin ich auf der Suche nach möglichen Fehlern. Mein erster Ansatz war, dass das Delegat, wie in der MSDN beschrieben, in einen __stdcall-Funktionszeiger umgewandelt wurde. Dies sieht folgendermassen aus bisher:
Ist es korrekt, dass dies einen Funktionszeiger der __cdecl Konvention erstellt?
Besten Dank
Cromon
Wie der Titel andeutet brauche ich von meinem Delegat einen unverwalteten Funktionszeiger, der der __cdecl Aufrufkonvention genügt. Da mein Code bisher nicht funktioniert und ich keine genauen Angaben habe warum bin ich auf der Suche nach möglichen Fehlern. Mein erster Ansatz war, dass das Delegat, wie in der MSDN beschrieben, in einen __stdcall-Funktionszeiger umgewandelt wurde. Dies sieht folgendermassen aus bisher:
C#:
public class EventManager
{
public EventManager()
{
eventHandler = OnEvent;
LUADelegate.WrapRegisterFunction("theEventHandler", eventHandler);
mEventScript.Lines.Add("...");
mEventScript.Execute();
}
public int OnEvent(IntPtr state)
{
Console.WriteLine("CALLED EVENT!");
return 0;
}
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
delegate int EventDelegate(IntPtr state);
EventDelegate eventHandler = null;
LUAScript mEventScript = new LUAScript();
}
internal static void WrapRegisterFunction(string function, Delegate pFun)
{
Script_RegisterFunction(function, Marshal.GetFunctionPointerForDelegate(pFun));
}
Ist es korrekt, dass dies einen Funktionszeiger der __cdecl Konvention erstellt?
Besten Dank
Cromon