Callback einer C# Methode aus einer managed C++ DLL heraus

07/04/2008 - 15:36 von Sebastian Grobosch | Report spam
Hallo NG,

ich habe folgendes Problem: Ich nutze eine managed C++ DLL in einem C#
Projekt. Ich möchte über die DLL eine Methode einer C# Klasse aufrufen.
Ich wollte es mal mit delegates probieren, da ich ja managed C++ Code
verwende - leider kein Erfolg.
Frage: Geht das überhaupt mit wie ich mir das vorstelle, wenn ja, wo
liegt mein Fehler? ;-)

Hier mal ein Auszug aus den Sourcen:

managed C++ DLL:
public ref class MyClass
{
public:
delegate void CallBackFunction();

void CallTest(CallBackFunction^ Funktion);
};


C#:
// Die delegate Klasse
public class DelegateFunctions
{
public delegate void delTest();
public delTest TestDelegate;

public DelegateFunctions()
{
}
}

...

dlgFunktion.TestDelegate = new DelegateFunctions.delTest(test);
//Zuweisung der delegate Funktion
...

void test()
{
MessageBox.Show("Hello World");
}

public void CallBack()
{
MyClass.CallTest(dlgFunktion.TestDelegate); // Aufruf der DLL
Funktion und Übergabe der delegate Funktion
}


Wenn die Methode CallBack() aufgerufen wird, sollte eine MessageBox
erscheinen...

Besten Dank schon mal,
Gruß
Sebastian
 

Lesen sie die antworten

#1 Sebastian Grobosch
08/04/2008 - 11:52 | Warnen spam
Sebastian Grobosch schrieb:
Hallo NG,

ich habe folgendes Problem: Ich nutze eine managed C++ DLL in einem C#
Projekt. Ich möchte über die DLL eine Methode einer C# Klasse aufrufen.
Ich wollte es mal mit delegates probieren, da ich ja managed C++ Code
verwende - leider kein Erfolg.
Frage: Geht das überhaupt mit wie ich mir das vorstelle, wenn ja, wo
liegt mein Fehler? ;-)

Hier mal ein Auszug aus den Sourcen:

managed C++ DLL:
public ref class MyClass
{
public:
delegate void CallBackFunction();

void CallTest(CallBackFunction^ Funktion);
};


C#:
// Die delegate Klasse
public class DelegateFunctions
{
public delegate void delTest();
public delTest TestDelegate;

public DelegateFunctions()
{
}
}

...

dlgFunktion.TestDelegate = new DelegateFunctions.delTest(test);
//Zuweisung der delegate Funktion
...

void test()
{
MessageBox.Show("Hello World");
}

public void CallBack()
{
MyClass.CallTest(dlgFunktion.TestDelegate); // Aufruf der DLL
Funktion und Übergabe der delegate Funktion
}


Wenn die Methode CallBack() aufgerufen wird, sollte eine MessageBox
erscheinen...

Besten Dank schon mal,
Gruß
Sebastian



Ich habe vergessen zu erwàhnen, welcher Fehler dabei auftritt ;-)
Bei MyClass.CallTest(dlgFunktion.TestDelegate) tritt folgendes auf:
Fehler 4 1-Argument: kann nicht von "DelegateFunctions.delTest" in
"MyClass.CallBackFunction" konvertiert werden.

Gruß
Sebastian

Ähnliche fragen