Referenzen in Delegates **gelöst**
-
wenn ich in der CLI C++ DLL das Delegate mit ^definiere und in den c# dann die funktion ohne ^ dann meckert er das die typen nicht übereinstimmen wenn ich das delegate erzeuge
Fehler CS0123: Keine Überladung für "DllResultHandler" stimmt mit dem Delegaten "DllDotNet.tKSRWdelDllResultHandler" überein.
wie verhindere ich das?
MfG
-
Wie sieht die Methode DllResultHandler von folgendem Code aus?
Read.OnDllResultHandler += new DllDotNet.delDllResultHandlerSyncGetEPCs(DllResultHandler);
Diese Methode MUSS der im Delegaten definierte Signatur entsprechen.
Simon
-
public delegate void tdelDllResultHandler(tResultFlag ResultFlag, tExtendedResultFlag ExtendedResultFlag, tResultListEntry ^rReultListEntry);
public void DllResultHandler(DllDotNet.tResultFlag ResultFlag, DllDotNet.tExtendedResultFlag ExtendedResultFlag,DllDotNet.tResultListEntry rResultListEntry)
oder
public void DllResultHandler(DllDotNet.tResultFlag ResultFlag, DllDotNet.tExtendedResultFlag ExtendedResultFlag,DllDotNet.tResultListEntry ^rResultListEntry)
beide führen zu Fehlern
-
Korrekt ist:
public void DllResultHandler(DllDotNet.tResultFlag ResultFlag, DllDotNet.tExtendedResultFlag ExtendedResultFlag,DllDotNet.tResultListEntry rResultListEntry
Was kommen für Fehler?
Das andere ist ja eben gar kein C# Code.
-
Fehler CS0123: Keine Überladung für "DllResultHandler" stimmt mit dem Delegaten "DllDotNet.delDllResultHandler" überein.
-
Dann wird wohl das Mapping eines Typen anders sein als angegeben.
Wie sind in C++/CLI die Parameter Typen des Delegaten definiert?
Simon
-
public value struct tResultListEntry { unsigned long udwTimeStamp; unsigned short uwReadCount; unsigned char ubCountWords; array<unsigned short> ^puwData; };
-
Aber das ist ja nur einer... die andern?
-
Mit dem ValueType (value struct) gehts nicht, weil der ValueType geboxt wird und es eine "komische" Signatur ergibt.
Du kannst ganz einfach aus dem value struct ein ref struct machen.
(Die Semantik ändert von Value auf Reference!).Simon
-
was ist den der unterschied zwischen dem value und ref?
-
Das findest Du bestimmt selbst mit ein wenig Googeln raus...
Ausserdem habe ich schon eine Erklärung abgegeben.
Simon
-
mit ref geht es
ich habe mal diese Seite gefunden http://www.codeproject.com/KB/cs/Types.aspx
danach besteht der einzige unterschied zwischen ref und value, dass wenn man
a=b;
macht bei ref die Referenz kopiert wird und bei value der Kopierkonstruktor gerufen wird.
Ist das korrekt?
-
danach besteht der einzige unterschied zwischen ref und value, dass wenn man
a=b;
macht bei ref die Referenz kopiert wird und bei value der Kopierkonstruktor gerufen wird.
Das ist nicht der einzige Unterschied.
-
http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx
http://msdn.microsoft.com/en-us/library/490f96s2.aspx
MSDN is your friend...