Wie wird die Kompatibilität zwischen nativem Code und .NET-Code in C++/CLI erreicht? (technisch)C++

Programme in C++. Entwicklerforum
Anonymous
 Wie wird die Kompatibilität zwischen nativem Code und .NET-Code in C++/CLI erreicht? (technisch)

Post by Anonymous »

C++/CLI ermöglicht Kompatibilität zwischen nativem und .NET-Code und umgekehrt.
Laut Microsoft ist diese Kompatibilität darauf zurückzuführen, dass die Assembly sowohl nativen als auch MSIL-Code enthält, sodass nativer Code .NET-Code aufrufen kann und umgekehrt. Aber wie wird technisch gesehen diese Kompatibilität zwischen nativem und MSIL-Code erreicht?
Angenommen, nativer Code ist im .text-Abschnitt eines .NET PE-Images und MSIL-Code in den .NET-Abschnitten gespeichert, wie kann dann MSIL-Code nativen Code aufrufen? Und wie kann nativer Code MSIL-Code aufrufen? Wie kommunizieren sie? Wer erlangt die Kontrolle über das Programm? Der native Code oder der verwaltete Code? Wenn der verwaltete Code die Kontrolle erlangt, wird er unter der CLR ausgeführt, aber wie ist es möglich, dem „nativen“ Heap Speicher zuzuweisen? Und wenn das Gegenteil der Fall ist, wie weist nativer Code dem CLR-Heap Speicher zu, wenn die CLR das Programm steuert?
Zum Beispiel:

Code: Select all

class Example {
public:
int example_method() {
return 1;

}
};
Angenommen, die folgende Klasse wäre nicht verwalteter Code, können wir ihn mit new dem Heap zuweisen, aber gcnew existiert auch für verwalteten Code. Wie ist das möglich? Wie ist es möglich, Objekte auf dem CLR-Heap zu verwenden und umgekehrt? Wie funktionieren diese gemischten Baugruppen?
Ich habe nicht viele technische Informationen dazu gefunden; Ich würde mich über Ihre Hilfe freuen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post