Wie dll in ein VB-Projekt einbinden und benutzen

  • VB.NET

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von Barkhan.

    Wie dll in ein VB-Projekt einbinden und benutzen

    Hallo zusammen,

    ich habe folgendes Problem. Ich möchte unter VB 2012 ein kleines Programm schreiben, um von einem Digitalvoltmeter (Agilent 34970A) ein Messwert auszulesen und diesen in einer Textbox anzuzeigen.

    Die Firma Agilent hat anscheinend hierzu eine Datei "visa32.dll" zur Verfügung gestellt, um das Digitalvoltmeter über die ieee488-Schnittstelle ansprechen zu können. Meine ieee488-Schnittstellenkarte der Firma INES wurde beriets installiert und funktioniert auch.

    Das Problem ist, wie binde ich die mir vorliegende "visa32.dll in mein projekt ein, um die nötigen Befehle zum ansprechen des Digitalmultimeters benutzen zu können?

    Bis jetzt versucht:

    1. "visa32.dll" in ...Windows/System32 gespeichert (aber die Befehle sind immer noch unbekannt!!!)

    2. Über Projekt/Verweis hinzufügen die "visa32.dll" in mein Projekt einzubinden, dabei erschien folgende Fehlermeldung

    "Es konnte kein Verweis auf c:\Users\dkdlabor\Documents\VisualStudio2012\Projects\TestInes\TestInes\visa32.dll hinzugefügt werden. Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder Com-Komponente ist."

    Wie ist so eine .dll-Datei einzubinden, um mit ihr arbeiten zu können?

    Gruss

    Barkhan
    1. Eine DLL in Dein Projekt einbinden:
      kopier sie in Dein bin\Debug und in dein bin\Release Verzeichnis.
    2. Füge sie als Referenz Deinem Projekt hinzu. Projekt -> Eigenschaften -> Verweise -> Hinzufügen
    3. Wenn nun alles in Ordnung ist, importiere im Code den NameSpace der DLL Imports ... (er müsste Dir hier angeboten werden)
    Wenn nichts geht, ist diese DLL wohl keine .NET-Assembly, dann hast Du ein Problem.
    Teste zunächst den beschriebenen Weg und schreib, ob es funktioniert hat.
    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!
    @RodFromGermany:

    Barkhan schrieb:

    "Es konnte kein Verweis auf c:\Users\dkdlabor\Documents\VisualStudio2012\Projects\TestInes\TestInes\visa32.dll hinzugefügt werden. Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder Com-Komponente ist."

    Ich denke mal du brauchst eine Headerdatei für diese DLL. Organisier dir die, dann sprechen wir weiter über das übersetzen von C-Header zu .Net.
    @RodFromGermany:

    Hallo, ich habe die visa32.dll wie unter 1. beschrieben eingefügt. Allerdings gibt es ein Problem bei 2., über Projekt -> Eigenschaften -> Verweise lässt sich die visa32.dll hinzufügen, aber danach nicht auswählen (mit OK bestätigen). Es erscheint folgende Fehlermeldung:

    Es konnte kein Verweis auf "C:\Users\dkdlabor\Documents\Visual Studio 2012\Projects\TestInes\bin\Debug\visa32.dll" hinzugefügt werden. Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder Com-Komponente ist. ?( :cursing: ;(

    Mit 3. weiß ich leider nicht was gemeint ist, aber bis dahin komme ich ja bis jetzt eh nicht, da ab 2. schon Probleme.

    @Mangafreak1995: Woher bekommt man die zugehörige Header-Datei?

    Gruß

    Barkhan

    Barkhan schrieb:

    weiß ich leider nicht was gemeint ist
    Bedeutet, dass nix in Ordnung ist.
    Du benötigst also einen .NET-Wrapper, wie auch immer.
    Wo hast Du die DLL her?
    Gibt es eine CD dazu?
    Gibt es eine Internet-Seite dazu?
    Gibt es c++-Include-Dateien dazu?
    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!
    Du hast wahrscheinlich eine native Dll. Du brauchst die Header und wenns geht auch die lib. Guck dir die dll mal im DependencyWalker an und guck ob nur Funktionen (dann brauchste nur die Header) oder auch Klassen exportiert werden. Da schreibste dir dann n Wrapper für. Falls es n .Net Wrapper schon gibt importier einfach diesen und leg die Native ins Programmverzeichnis.

    Barkhan schrieb:

    die visa32.dll wurde von mir hier runter geladen
    Beim Klicken drauf:
    Die blockierte Webseite befindet sich in der Kategorie Viruses_site.
    Check bitte mal Deinen Rechner.
    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!
    OK. Sieh bitte mal nach, was da an Beschreibung noch zu holen ist und lade sie ggf. runter.
    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!
    Du solltest schon auf der offiziellen Seite nachschauen.
    UserGuid: cp.literature.agilent.com/litweb/pdf/5991-1389EN.pdf
    Suite: home.agilent.com/en/pd-1985909…s-suite-162?&cc=DE&lc=ger

    Du musst dir dann aus den nativen Beispielcodes die PInvoke-Signaturen raussuchen.
    Als Pinvoke bezeichnet man den Aufruf von nativem Code aus verwalteten Anwendungen. Da das, wie du selbst schon gemerkt hast, nicht einfach über Einbinden der DLL funktioniert, muss mann die externen Funktionsaufrufe durch einen sogenannten DllImport deklarieren. Signatur deshalb, weil du nur die Aufrufkonvention (also EntryPoint, Parameter, Returnvalue, usw. -> im Allgemeinen als Signatur bezeichnet) bekanntmachen musst. Hier hast du auch noch die Beschreibung auf MSDN.
    mmh, wie geht man da am besten vor? Ich sitze auch gerade nicht an dem Rechner auf dem ich programmiere, sodass ich das erst morgen früh testen kann. Werde morgen versuchen die visa32.vb in mein Testprogramm einzubinden und mich dann wieder melden!!!
    Vielen Dank erstmal für die vielen Antworten.

    Ist als Anfänger gar nicht so leicht die Tips zu verstehen :S

    Gruss
    Barkhan