ansi C dll einbinden



  • Hi all,
    muss eine ANSI-C Dll (auch als TLB vorhanden) in meine App. einbinden.
    Schon beim Einbinden geht der Trouble los. ....

    Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder COM-komponente ist

    Wahrscheinlich müssten ja auch die Funktionen angepasst werden.
    (sind etwa 100 mit komplexen Datentypen als parametern).

    ➡ Wie soll ich hier vorgehen?
    Danke im Voraus!
    Uwe



  • Hallo Uwe,

    native DLLs werden über das DllImportAttribute eingebunden (nicht als Referenz in das Projekt).
    Und das Stichwort für die Parameter-Anpassung lautet: Marshalling



  • Th69 schrieb:

    Hallo Uwe,

    native DLLs werden über das DllImportAttribute eingebunden (nicht als Referenz in das Projekt).
    Und das Stichwort für die Parameter-Anpassung lautet: Marshalling

    Hab ich das richig verstanden? Jede einzelne Funktion zu 'Marshallen'?
    Bei geschachtelten Strukturen und Callbacks bei den etwa 100 Funktionen wird das ganz schön viel nicht?



  • UweM schrieb:

    Bei geschachtelten Strukturen und Callbacks bei den etwa 100 Funktionen wird das ganz schön viel nicht?

    Du könntest dir überlegen, den Teil der mit der dll redet in C++/CLI zu bauen...



  • dot schrieb:

    UweM schrieb:

    Bei geschachtelten Strukturen und Callbacks bei den etwa 100 Funktionen wird das ganz schön viel nicht?

    Du könntest dir überlegen, den Teil der mit der dll redet in C++/CLI zu bauen...

    Also'n Interface zwischen C Dll und C# Anwendung?



  • gewissermaßen ja


  • Administrator

    Wobei der Aufwand dann in etwa gleich gross ist, unter Umständen sogar grösser, kommt ganz auf die Anwendung an.

    Aber um sowas in der Art wirst du nicht drum herum kommen. C# Code wird komplett anders verarbeitet als native C Code. Es muss somit irgendeine Schnittstelle erstellt werden. Bei P/Invoke hast du zwar theoretisch Werkzeuge, welche Schnittstellen Code für dich generieren können, davon ist im allgemeinen aber abzuraten, da sie des Öfteren falschen Code produzieren. Sie können aber als Hilfswerkzeug herangezogen werden.

    Grüssli



  • Dravere schrieb:

    Wobei der Aufwand dann in etwa gleich gross ist, unter Umständen sogar grösser, kommt ganz auf die Anwendung an.

    Aber um sowas in der Art wirst du nicht drum herum kommen. C# Code wird komplett anders verarbeitet als native C Code. Es muss somit irgendeine Schnittstelle erstellt werden. Bei P/Invoke hast du zwar theoretisch Werkzeuge, welche Schnittstellen Code für dich generieren können, davon ist im allgemeinen aber abzuraten, da sie des Öfteren falschen Code produzieren. Sie können aber als Hilfswerkzeug herangezogen werden.

    Grüssli

    Danke! dann werd ich mich erstmal ans Marshallen machen!
    Gruß


Anmelden zum Antworten