C++ CLR



  • Hallo zusammen,

    um ehrlich zu sein habe ich mich so gut wie noch nicht so richtig mit C++ und der Verwendung von WPF Controls in unmanaged Applications beschäftigt und hätte daher mal ein paar Fragen.

    Ich habe zum Testen mal ein WPF Control in mein natives Projekt eingebuden und mit /clr compiliert usw. Klappt soweit auch alles ganz gut nur was ist meine exe jetzt eigentlich?! Ist sie nativ? Ist sie .NET? Ist sie irgendwie beides? Wenn ich die exe in IDA Pro werfe, dann bietet er mit den Code in IL und Assembler an. Gucke ich in so Tools wie PE Explorer oder so dann sind es .NET Anwendungen. Was ist es aber denn nun?

    Wie ist das mit solchen Anwendungen. Das nennt man dann doch CLI Anwendungen oder?
    Habe ich dann die Power und Performance aus der nativen Welt und die Bequemlichkeit und Nettigkeiten aus der .NET Welt?



  • secondsun schrieb:

    Ist sie nativ?

    Das nennt sich "Managed C++" oder auch c++/cli. Das ist kein natives C++.

    secondsun schrieb:

    Ist sie irgendwie beides?

    Nein, es ist eine managed Anwendung, jedoch kannst Du dank IJW native calls machen die dann im nativen Bereich laufen "außerhalb" des managed stacks laufen. Dabei muss man aber auf ein paar Besonderheiten achten, z.B. bei der Speicherverwaltung weil hier die GC Probleme erzeugen kann.

    secondsun schrieb:

    Habe ich dann die Power und Performance aus der nativen Welt und die Bequemlichkeit und Nettigkeiten aus der .NET Welt?

    Jein. C++/CLI ist ein Bastard zwischen nativem C++ und C#. Das führt zu einigen Unschönheiten in der Syntax und manchen Umständlichkeiten (z.B. gibt's in C++/cli kein yield return). C# ist definitiv besser als C++/CLI.

    Ich benutze C++/cli nur dann als wrapper um native Anteile in C# einzubetten. Dafür ist es perfekt.


Anmelden zum Antworten