none
Alte C/C++ Dll umschreiben nach VC#/VC++ möglich ? RRS feed

  • Frage

  • Hallo,

    Hintergrund ist eine alte C/C++.dll so umzuschreiben, daß ich ihn in VC#/VC++ nutzen kann, denn in dem dll. befindet sich unter anderem int[][] Arrays, die in VC# int [,] Arrays enorme Schwierigkeiten machen.

    Ich stoße auf viele Begriffe wie CLR, MFC, Native, un-/managed.

    Fragen ?:

    1. kann ich ohne Probleme die Funktionen und Struktur dieser C/C++.dll einfach nach VC#/VC++.dll umsetzen und ihn in VC# nutzen ?

    2. welche Art der dll-Erstellung nehme ich (CLR, MFC, Native) damit der neue dll ohne Probleme in VC#/VC++ nutzbar ist ?

    3. alte C/C++.dll beibehalten und auf seine Funktionen zugreifen, wie (int[][] Arrays => VC# int [,] Arrays) ?

    ich bin Umsteiger von Borland => VStudio

    und bitte um Unterstützung.

    MFG


    • Bearbeitet ati.sah Donnerstag, 30. Januar 2014 14:26
    Donnerstag, 30. Januar 2014 13:48

Antworten

  • Hallo,

    zu 1.
    Das sollte kein großes Problem darstellen. In C# musst du die Syntax natürlich noch anpassen.

    zu 2.
    Hier kommt es darauf an, was genau du vor hast. Als Zwischenmöglichkeit wäre ein C++/CLI-Projekt möglich. Dann kannst du dieses aus C# heraus verwenden. C++ benötigt dann jedoch immer die .NET Runtime. Die DLL in eine neuere Version von C++ zu übersetzen macht keinen Sinn. Nur C# ist möglich, wenn die Ziel-C++-Projekte .NET integrieren.

    zu 3.
    Da kann ich dir weniger helfen. Ich bin aber der Meinung, das es möglich ist. Noch ein konkretes Beispiel kann ich dir aber nicht geben (vgl. deine andere Frage).


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 30. Januar 2014 14:40
    Moderator
  • Hi Ati,

    also zu

    1. Vom Prinzip her kannst du ohne Probleme c++ dll in C# Benutzen, nur wenn du als Zielsystem .net Compact Framework verwendest kann es zu Problemen kommen. Du musst nur das Marshalling dir anschauen. Der Link http://msdn.microsoft.com/en-us/library/ms173185.aspx. Für fragen zu diesem Thema musst du nur nach "It Just Works" googeln. Es gibt aer auch das managed C++ was auch gerade für diesen Fall gedacht ist. Bei dem managed C++ schreibst quasi eine Brücke von managed nach unmanaged. Hier hilft auch Google weiter.

    2. Also um zukünftig dll zu erstellen da entweder managed c++ oder C#. MFC ist auch nur eine "native" Dll.
    Man unterscheidet Prinzipiell zwischen native (keine .net) und managed dll (.net).

    3. Siehe Antwort 1.

    Falls du noch Fragen haben solltest dann stelle sie, versuche dich aber bitte erst durchzu googlen da dies Thema sehr gut beschrieben ist.

    Freitag, 31. Januar 2014 13:35

Alle Antworten

  • Hallo,

    zu 1.
    Das sollte kein großes Problem darstellen. In C# musst du die Syntax natürlich noch anpassen.

    zu 2.
    Hier kommt es darauf an, was genau du vor hast. Als Zwischenmöglichkeit wäre ein C++/CLI-Projekt möglich. Dann kannst du dieses aus C# heraus verwenden. C++ benötigt dann jedoch immer die .NET Runtime. Die DLL in eine neuere Version von C++ zu übersetzen macht keinen Sinn. Nur C# ist möglich, wenn die Ziel-C++-Projekte .NET integrieren.

    zu 3.
    Da kann ich dir weniger helfen. Ich bin aber der Meinung, das es möglich ist. Noch ein konkretes Beispiel kann ich dir aber nicht geben (vgl. deine andere Frage).


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 30. Januar 2014 14:40
    Moderator
  • Hallo,
    ein klein wenig zu der Begriffsvielfalt. Die MFC ist das Gegenstück zu Borlands OWL.
    Native und Managed meinen reines C/C++ oder auf Basis des Dahinterliegenden .NET Framework. Das kennst Du aus der Borland Welt ja schon, dort kann man ja auch .NET Programme erzeugen.
    CLI ist nichts anderes als die Managed Variante für C++.
    Mit einfachen Worten

    HTH

    Grüße Alexander

    Freitag, 31. Januar 2014 08:02
  • Hi Ati,

    also zu

    1. Vom Prinzip her kannst du ohne Probleme c++ dll in C# Benutzen, nur wenn du als Zielsystem .net Compact Framework verwendest kann es zu Problemen kommen. Du musst nur das Marshalling dir anschauen. Der Link http://msdn.microsoft.com/en-us/library/ms173185.aspx. Für fragen zu diesem Thema musst du nur nach "It Just Works" googeln. Es gibt aer auch das managed C++ was auch gerade für diesen Fall gedacht ist. Bei dem managed C++ schreibst quasi eine Brücke von managed nach unmanaged. Hier hilft auch Google weiter.

    2. Also um zukünftig dll zu erstellen da entweder managed c++ oder C#. MFC ist auch nur eine "native" Dll.
    Man unterscheidet Prinzipiell zwischen native (keine .net) und managed dll (.net).

    3. Siehe Antwort 1.

    Falls du noch Fragen haben solltest dann stelle sie, versuche dich aber bitte erst durchzu googlen da dies Thema sehr gut beschrieben ist.

    Freitag, 31. Januar 2014 13:35
  • Hallo,

    Danke für die Raten.

    Ich habe soviele Einträge im Internet gefunden. Einige getestet und einige noch nicht.

    Ich habe ein C My.dll, wo der C# die Funktionen findet und auch deren Ergebnisse ausliefert. Nur bei einem der selben dll nicht (wo er ein 2D Array[5][12] bestimmter Länge) liefern soll (vgl meine).

    MFG


    • Bearbeitet ati.sah Mittwoch, 5. Februar 2014 15:35
    Dienstag, 4. Februar 2014 13:48