Announcement

Collapse
No announcement yet.

Mit c++ auf net.dll zugreifen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mit c++ auf net.dll zugreifen

    Hallo,

    welche Möglichkeiten gibt es von C++ auf eine Net.dll zuzugreifen. Geht das nur wenn man die Net.dll als COM-Server zuverfügung stellt? Oder was gibt es noch? Vielleicht einen Wrapper? Wer hat eine Idee.
    Danke schonmal im vorraus.

    Gruß
    Rene

  • #2
    Ja, ein Wrapper kann mit .NET/CLI erstellt werden

    Ja, ein Wrapper kann mit .NET/CLI erstellt werden.

    Es wird eine .NET/CLI-Wrapper-Dll erstellt welche
    "C"/"C++" Methoden/Funktionen exportiert und die .NET Dll einbindet.

    Gruß

    Jens Schneeweiß

    Welche Dll soll in C++ genutzt werden?

    Comment


    • #3
      Danke für die Antwort.

      D.h. ich muss nur eine CLR-Klassenbibliothek erstellen in der ich die Dot-Net.dll anziehe und muss dann noch die Methodenaufrufe weiterleiten. Auf die CLR.dll kann ich von C++ ganz normal zugreifen.

      Die DLL in Net ist noch gerade im entstehen. Und da ich von C++ zugreifen muss (weil Vorgabe) muss ich wohl den weg wehen.

      Kennst du noch Links zu dem Thema? Denn ich bin ja sicherlich nicht der erste der ein solches Problem hat. Oder wo kann ich dazu etwas mehr nachlesen?

      Danke schonmal für die Infos.

      Gruß

      Rene

      Comment


      • #4
        Hallo Rene,

        http://support.microsoft.com/kb/828736 beschreibt eine Möglichkeit.

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Danke Gü,

          die Info war echt super. Habe es auch gleich probiert. Klappt auch super.

          Aber weißt du vielleicht noch eine gute HilfsLib für C++ für COM? Die Datenkonvertierung ist ja dort immer noch sehr unschön. Ich habe auch schon etwas mit COM und C++ gearbeitet. Aber die Konvertierung von BSTR, usw. ist echt nicht schön. Hast du einen Tipp? Oder ist es einfacher wenn man managed C++ (CLR) verwendet? Eine Idee?

          Gruß
          Rene

          Comment


          • #6
            Da ich keine echte Erfahrung in reinem C++ habe kann ich da keinen wertenden Vergleich anstellen. Aber auch in C++/CLR wirst du konvertieren müssen. Da hast du es zwar nicht mit den eher COM-sichere Typen (wie z.B. BSTR) zu tun dafür mußt du aber natürlich zwischen managed und unmanaged Typen also z.B. zwischen std::string und System::String konvertieren.

            Ein paar 'Gewusst wie' Beiträge findest du hier in der msdn.

            Comment


            • #7
              Das sind schonmal ein paar gute Info. Vielleicht eines noch. Kann ich auch irgendwie ganze Objekte über COM übertragen? In der C# dll werden teilweise als Rückgabewert Objekte geliefert. Aber wie kann ich diese in C++ wieder auslesen?

              Comment


              • #8
                In der C# dll werden teilweise als Rückgabewert Objekte geliefert
                Nicht teilweise sondern immer. In .NET ist letztlich alles Object
                Aber genug geklugscheißert.

                Meinst du jetzt mit c++ managed oder unmanaged?
                Die Grenzen von managed nach unmanaged wirst du per COM nicht überbrücken können. Wenn du unmanaged c++ meinst also ein klares nein.

                Wenn du managed c++ meinst (womit dann aber eigentlich COM unnötig ist) so könnte man versuchen Das Object in ein COM Variant zu packen. Halte ich aber auch für sehr unwahrscheinlich das das geht.

                Ich würde das Object einfach serialisieren dann als string übertragen und am Ziel wieder deserialisieren.

                Comment


                • #9
                  Danke für die Info. D.h. auf jedenfall wenn ich auf Managed umsteige tue ich mir sehr viel leichter bei allem. Richtig?

                  Comment

                  Working...
                  X