Komplette Native DLL importieren

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von BiedermannS.

    Komplette Native DLL importieren

    Hallo,

    ich bin immer noch auf der suche wie ich die BPM eines Liedes herrausbekomme...

    Dabei bin ich auf ZPlay gestoßen. libzplay.sourceforge.net/WELCOME.html

    So das ganze Funktioniert auch ganz gut nur schmiert mir das Programm immer beim

    VB.NET-Quellcode

    1. Dim player as NEw Zplay
    ab. (Also bei den ersten Codezeilen die sich auf das ZPlay beziehen... )

    Meldung: DLL fehlt... wenn ich die DLL dazu einfach so einbinden will wie ich es immer getan habe: geht es in Visual Studio gar nciht und im SharpDeveloper nur unter fehlermeldungen funktionieren tut letztenendes keines von beiden!

    Meine vermutung die DLL ist nativ also muss ich doch einen DLLImport machen korrekt?

    Aber funktioniert sowas nciht immer nur für eine Funktion?? ICh weiß ja nicht bei welcher er genau abschmiert bzw welche er alles noch braucht!?



    Danke, Grüße



    Flo
    Entweder das ist eine .NET-DLL, da fügst Du sie einfach als Referenz hinzu und Die werden die Klassen angeboten, wenn Du

    VB.NET-Quellcode

    1. Imports
    oben in den File schreibst.
    Oder das ist eine C / C++-DLL, da musst Du recherchieren, welche Funktionen drin sind (das bekommt man noch mit einem Tool raus) und wie Du sie aufrufen musst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also über Imports geht es nicht... (Das ist die Methode, wie ich oben sagte, wie ich es normaler weiße tuhe!)...



    Woran erkenne ich eine .NET-DLL oder eine C++.DLL??




    das bekommt man noch mit einem Tool raus



    Und das wäre z.b. welches? ;)



    Danke

    Flo_Biber schrieb:

    Woran erkenne ich eine .NET-DLL oder eine C++.DLL??

    Flo_Biber schrieb:

    Also über Imports geht es nicht...
    Also nicht .NET.
    Wechsle nun zur Recherche-Phase. :S
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also wenn ich die Datei mit SharpDeveloper über Imports importiere dann kommt beim hinzufügen der Referenz das:

    Quellcode

    1. Error loading assembly:
    2. Mono.Cecil.Binary.ImageFormatException: The image is not a managed assembly
    3. bei Mono.Cecil.StructureReader..ctor(ImageReader ir)
    4. bei Mono.Cecil.AssemblyFactory.GetAssembly(ImageReader irv, Boolean manifestOnly)
    5. bei Mono.Cecil.AssemblyFactory.GetAssembly(String file)
    6. bei ICSharpCode.SharpDevelop.Dom.CecilReader.LoadAssembly(String fileName, ProjectContentRegistry registry)
    7. bei ICSharpCode.SharpDevelop.Dom.ProjectContentRegistry.LoadProjectContent(String itemInclude, String itemFileName)
    8. bei ICSharpCode.SharpDevelop.Dom.ProjectContentRegistry.GetProjectContentForReference(String itemInclude, String itemFileName)

    Und beim Umwandeln das hier:

    Quellcode

    1. Resolved file has a bad image, no metadata, or is otherwise inaccessible. Die Datei oder Assembly "C:\Users\****\Desktop\libzplay-2.02-sdk\libzplay.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Im Modul wurde ein Assemblymanifest erwartet. (MSB3246)



    So ich habe die DLL mit dem Dependency Walker geöffnet und musste lachen... ich kann ja wohl nciht alle Funktionen da einfügen oder? Wie also finde ich herraus auf welche die zplay.vb Datei zugreift?!
    Danke, Grüße
    Flo

    Flo_Biber schrieb:

    Wie also finde ich herraus auf welche die zplay.vb Datei zugreift?

    RodFromGermany schrieb:

    Wechsle nun zur Recherche-Phase. :S
    Was sagt denn die www des Herstellers?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Was sagt denn die www des Herstellers?





    Quellcode

    1. How to use VB.NET interface
    2. add libZPlay.vb to your project
    3. include libZplay namespace
    4. create instance of ZPlay class
    5. use ZPlay methods to play music

    Irgendwie klingt das hier deutlich einfacher... :/
    Die habe ich per Exestierende Datei hinzufügen in mein Projekt mit aufgenommen.



    Ich habe so eben in der besagten Datei: libZPlay.vb

    Ziehmlich viele DLLImporte gefunden... Die meisten davon beziehen sich auf die libzPlay.dll kann es ein das ich diese in den System32 ordner schieben muss?



    Quellcode

    1. Letzteres hat nun die Lösung gebracht! Danke trotzdem!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Flo_Biber“ ()

    Die DLL muss im selben Ordner wie das fertige Programm sein, oder du musst den Pfad bei den DLLImports angeben.

    Edit: nicht in den System32 Ordner.
    ziehe die DLL einfach in den Projektmappen explorer und stell bei ins Ausgabeverzeichnis kopieren auf: kopieren wenn neuer oder auf immer kopieren.
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BiedermannS“ ()