DLL-funktionen in C#



  • Hi Leute

    Ich hab hier ein völlig undokumentiertes C#-Projekt, das Funktionalität aus einer DLL nutzt. Nun möchte ich herausfinden welche Funktionen dort drin stecken. Weil ich am liebsten diese DLL dann für ein C++-Projekt nutzen will. Das geht natürlich nur, wenn die von mir benötigte Funktionalität in der DLL und nicht im C#-Projekt enthalten ist.

    Wie bekomme ich also raus, welche Funktionen / Klassen / NameSpaces in der DLL drinstecken, ohne jetzt den kompletten C#-Code zu durchforsten, nach Funktionen / Klassen die benutzt werden, aber nicht auffindbar sind ( die müssten ja dann in der DLL stecken, theoretisch 😉 ).

    gruß und danke im Voraus

    tobi



  • Such doch mal nach DLLImport oder extern im C# Code.



  • Kommt auf die DLL an, aber wenn via C- Funktionen exportiert wurde, dann kannst Du auch den Dependency Walker benutzen.
    Simon



  • ok, da hab ich jetzt einiges gefunden. Nur keine Importe aus der DLL Datei im C#-Code.
    Auch der DependencyWalker und andere Tools haben keine Funktionen gefunden...

    Da werd ich wohl mal Kontakt mit dem ursprünglichen Entwickler der DLL aufnehmen müssen.



  • Gibt es denn Möglichkeiten in DLLs, dass die Funktionen irgendwie versteckt sind, oder irgendwie anders über Umwege aufgerufen werden...

    Ich bin da aktuell etwas verwundert und mein Kollege der langjährige Erfahrung mit sowas hat, ist auch etwas perplex 😃



  • Gibt es denn Möglichkeiten in DLLs, dass die Funktionen irgendwie versteckt sind, oder irgendwie anders über Umwege aufgerufen werden...

    Weiss nicht was Du meinst.. ?

    Ev. so??
    Du siehst im C# Code, dass eine Funktion der DLL aufgerufen wird, aber in der DLL findest Du sie nicht, oder wie?



  • Ist die DLL überhaupt eine native Windows-DLL (mit C-Schnittstelle) oder einfach eine .NET-Assembly?
    Bei letzterem zeigt dir der DependencyWalker natürlich nichts an.

    Ich tippe darauf, weil es anscheinend keine DllImports im C#-Code gibt...

    Somit kannst du diese DLL dann auch nicht von C++ aus direkt aufrufen, außer du verwendest C++/CLI und schreibst dir damit wiederum eine Wrapper-DLL, die dann von C++ verwendet werden kann.



  • Du siehst im C# Code, dass eine Funktion der DLL aufgerufen wird, aber in der DLL findest Du sie nicht, oder wie?

    genau das.

    Ihr könntet mit der .NET Assembly recht haben..



  • wenns ne .net assembly ist kannste dann auch mitn reflektor rein schaun und dir die methoden anschaun

    einfacher ist es auch wenn du den haupt namespace kennst
    den tippste dann einfach in VS und intellisense zeigt dir an was es public gibt

    und wenn die methoden zudem noch die comment header haben (///) dann kannste mit sandcastle auch automatisch eine chm hilfedatei (sdk like) generieren lassen



  • also der reflector hats geöffnet und ich konnte auch methoden sehen. Also ist es wirklich eine .NET Assembly...



  • Und wo ist jetz dein Problem genau?



  • das Problem ist, dass ich eigentlich C++ verwenden wollte, was jetzt aber nicht mehr möglich ist. Aber ich hab hier jetzt erstmal alle Informationen, die ich wollte und bedanke mich bei euch für eure Hilfe 🙂 /bow


Anmelden zum Antworten