Announcement

Collapse
No announcement yet.

Zugriff auf unmanged dll von C++/CLI

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

  • Zugriff auf unmanged dll von C++/CLI

    Hallo,

    ich habe eine unmanged C++ DLL, die ich in einer Anwendung C++/CLI (managed) anbinden möchte. Wenn ich dies nun im managed Bereich mit UNClass* myNewClass = new UNClass als Objekt erstelle bekomme ich immer eine File.IO.NotFoundException. Welche Möglichkeiten gibt es denn von managed C++ auf unmanaged C++ zugreifen?
    Da ich von der unmanaged Ecke komme, dachte ich, ich kann einfach die lib anbinden und die Includes. Und könnte mir dann das unmanged-Object erstellen. Am Ende würde dieses wieder löschen.
    Hat jemand einen Tipp?
    Zuletzt editiert von ReneS; 07.07.2009, 17:26.

  • #2
    Bin selber drauf gekommen. Habe vergessen die unmanaged dlls beizulegen. Dann erklärt auch die Exception.

    Muss man aber die unmanaged dll intern noch durch #pragma unmanged speziell kennzeichen?

    Comment


    • #3
      Hallo,

      das würde ich mich auch interessieren... wenn Du's herausbekommen hast bitte posten... danke

      Gruß
      Simon

      Comment


      • #4
        Hallo Simon,

        wie oben schon geschrieben habe,.. lag es daran das die unmanaged DLL nicht bei den Binarys lag. Ich musst diese einfach dazu legen und die File.Not.Found-Execption war weg. Aber Grunde schreibe ich gerade einfach einen Wrapper (managed) um die unmanged Klasse. Das ganze mache ich mit C++/CLI. Dann kann ich diese auch einfach mit C# anbinden. Brauchst du noch mehr Infos?

        Gruß
        Rene

        Comment


        • #5
          Hi,

          ich habe so was ähnliches: Ich baue ein Plugin für ein Geoinformationssystem (ArcMap). Eigentlich ist das Com aber netterweise hat die Herstellerfirma schon alles für NET hergerichtet. Mein Problem ist aber dass ich auf andere Biblotheken in C++ (unmanaged) zugreifen muss.

          Ich mach also das Userinterface für mein Plugin in C#. Dann rufe ich davon eine C++ dll (managed) auf. Die kennt die Datentypen des Porgramms sowohl als NET Klassen aber auch als COM Objekte. Ich kann jetzt die NET Klassen als Parameter in meine managed C++ übergeben und dann in das entsprechende COM Objekt casten. Danach rufe ich meine unmanaged C++ funktionen in den Biblitheken auf.

          Alles funktioniert super, nur will ich ja auch Parameter an mein C# Plugin zurückgeben. Und das bekomme ich nicht hin?

          Von C# auf C++ siehts so aus:
          void ConverterTest(ESRI::ArcGIS::Geometry::IPolyline^ polyline)
          {
          IntPtr ip = Marshal::GetComInterfaceForObject(polyline,ESRI::A rcGIS::Geometry::IPolyline2::typeid);
          IPolyline2* arcPolyline = static_cast<IPolyline2*>(static_cast<void*>(ip));

          IPolyline2Ptr ipArcPolyline (arcPolyline);
          ...
          ...

          Ich will aber aus IPolyline2* arcPolyline wieder ein IPolyline^ polyline machen und zurückgeben.... ???

          Gruß Simon

          Comment

          Working...
          X