Announcement

Collapse
No announcement yet.

"alte" dll mit c#

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

  • "alte" dll mit c#

    Hallo zusammen,

    wie kann ich eine "alte" dll, die für VB6 ist in dotnet verwenden.

    Vielen Dank im voraus

    Stefan

  • #2
    Hallo,

    das kommt darauf an, was in dieser DLL drin ist. Im Fall einer "echten" DLL (die Funktionen über die Exporttabelle bereitstellt) ist der Zugriff über P/Invoke (Attribut <b>DllImport</b>) der richtige Weg:
    <pre>
    [DllImport("user32.dll")]
    extern static int MessageBox(int hWnd, string sMsg, string sTitel, int iFlags);
    private void button2_Click(object sender, System.EventArgs e)
    {
    MessageBox(0, "Message", "Title", 0);
    }
    </pre>
    Wenn sich in der DLL allerdings ein COM-Objekt (In-Process-Server) verbirgt, wird der <i>Runtime Callable Wrapper</i> (RCW) benötigt. Dieser Wrapper wird beim Einbinden des COM-Objekts in Visual Studio .NET automatisch generiert, aber auch das Tool <i>tlbimp.exe</i> aus dem .NET Framework SDK führt zum gleichen Ziel

    Comment


    • #3
      Hallo,

      hab ich verstanden hat auch soweit funktioniert, nur bekomme ich beim einbinden meiner DLL folgende Fehlermeldung :
      Zusätzliche Informationen: Der Einstiegspunkt 'ReadSketchFile' wurde nicht in der DLL isislib.dll gefunden.

      Die Methode gibt es !! Der Objektbrowser, zeigt mir allerdings die DLL als interface an !! Ist das korrekt oder was stimmt da nicht ?

      Bis dann
      Stefa

      Comment


      • #4
        In diesem Fall gehe ich davon aus, dass sich hinter der DLL ein COM-Objekt verbirgt, dass alle Methoden nur über das Interface veröffentlicht, aber nicht über die Exporttabelle. Um diese "DLL" in C# nutzen zu können, muss man in VS.NET im Solution Explorer eine Reference auf das COM-Objekt hinzugfügen. VS.NET sorgt dann im Hintergrund automatisch dafür, dass die .NET-Wrapper-Klassen generiert werden, so dass ab diesem Zeitpunkt der Zugriff wie gehabt erfolgen kann

        Comment

        Working...
        X