Entwickler-Ecke
Sonstiges (.NET) - MFC-Applikation unter .NET
Snoboldo - Di 21.04.09 16:52
Titel: MFC-Applikation unter .NET
Hallo,
sitze derzeit an einer Applikation, die unter Visual C++ 6.0 (C++, MFC) geschrieben wurde. Mein Ziel ist es
diese Applikation auf C# zu portieren. Gibt es eine Möglichkeit diesen (unmanaged) Code unter C# zu
verwenden? Ich stelle mir das so vor, dass aus dem alten Code entsprechende DLLs erzeugt werden, die dann unter
C# (Visual Studio 2005 oder 2003) verwendet werden können. Ist so etwas möglich bzw. auch sinnvoll, oder
sollte am besten gleich die Anwendung in C# geschrieben werden?
Gruß
S
JasonDelife - Fr 24.04.09 21:39
Ja, man kann in C# unmanaged C/C++ verwenden, mit P/Invoke.
So ungefähr:
C#-Quelltext
1: 2: 3: 4:
| using System.Runtime.InteropServices; [DllImport("someUnmangedDll.dll")] private extern int TheNameOfTheUnmangedFunction(int myIntParam); |
Einfach mal MSDN nach DllImport und P/Invoke durchsuchen.
So, nun das
ABER:
P/Invoke ist dazu da, um performancekritische Teile in (schnelleren) unmanged Code auszulagern
oder um Win32-API-Funktion / Funktionen, die man in C# nicht schreiben kann (Treiber, ...) zu nutzen.
Außerdem sind P/Invoke-Aufrufe um ein vielfaches langsamer als der Aufruf einer C#-Methode.
Du solltest also (wenn möglich) alles komplett in C# schreiben. Wenn es C++-Code gibt, den du nicht portieren kannst
(wie oben gesagt), dann solltest du NUR diesen Code in eine unmanaged DLL packen und mit P/Invoke aufrufen.
Grüße, JasonDelife.
Kha - Fr 24.04.09 22:55
C++/CLI bietet eine quasi nahtlose Integration in beide Richtungen. Ob das besser ist als die Anwendung gleich neu zu schreiben, kann ich nicht beurteilen.
Snoboldo - So 26.04.09 13:33
Danke für eure Antworten. Das Thema hat sich aber erstmal erledigt. Falls jemand ein ähnliches Problem hat,
so gäbe es noch den Weg managed Wrapper-Klassen zu erzeugen, deren Methoden auf die unmanaged-Klassen verweisen.
Gruß
Robert.Wachtel - So 26.04.09 13:55
Snoboldo hat folgendes geschrieben : |
| [...] gäbe es noch den Weg managed Wrapper-Klassen zu erzeugen, deren Methoden auf die unmanaged-Klassen verweisen. [...] |
Also das, was JasonDelife ja schon erwähnt hat.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!