DLL einbinden

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    DLL einbinden

    Hallo,

    Ich habe mir selbst eine dll geschrieben und will die jetzt in mein Projekt einbinden.
    Ich mach das so wie immer indem ich auch My Project geh und dann references, Add und fertig.
    Aber nachdem ich das getan hab kann ich nirgendst ein Import auf diese dll setzten. Die is wie als wäre sie nicht da!

    brauchte bitte hilfe vielen dank
    Ja hab ich schon probiert. geht auch nicht
    Ich hab das ja schon 100000 mal gemacht.

    EDIT: Kann das vielleicht daran liegen das ich nur Module in meiner library habe mit Namespaces?!

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

    ehhmm ich bin so der totengräber :D

    aber hier muss es sein :D
    (is ja noch nich so arg alt der Thread)

    und zwar ich habn ähnliches Problemchen:

    und zwar hab ich mir ne .dll ausm Internet geladen und die möchte ich nun in mein Projekt laden, aber egal was ich mit der .dll mache
    (schreibgeschütz rein raus, in meinen projektordner verschieben)

    Es kommt eine Fehlermeldung, das womöglich nicht auf die .dll zugegriffen werden kann.
    Habt ihr vllt n Tipp woran das liegen könnte?
    Voraussetzung: alle benötigten DLLs liegen im bin\Debug- bzw. bin\Release-Ordner
    1. Ist die DLL eine .NET-DLL?
    nein:
    Dann so einbinden

    VB.NET-Quellcode

    1. <DllImport("user32.dll")> _
    2. Public Shared Function GetAsyncKeyState(ByVal vKey As Integer) As Integer
    3. End Function

    fertig.
    ja:
    2. Ist die DLL mit AnyCPU compiliert:
    ja: sollte laufen. fertig.
    nein: Projekt auf x86 umstellen. fertig.
    -------------------------------------------------------
    Ich hoffe, dass ich hier die überwiegende Mehrheit der Fälle berücksichtigt habe.
    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!
    Hi ich weiß dass dieses Thema schon alt ist...
    Naja egal
    Ich habe auch eine DLL geschrieben und die Importe.
    Alles hat Super geklappt.
    Bis ich noch paar Funktionen in der DLL ergänzt.
    Also habe ich alle Verbeiße der alten DLL gelöscht und die neue Importe jedoch mit dem Problem das Funktionen aus der DLL nicht Importen kann.
    Dann habe ich mich gewundert und die alte nochmal reingeladen da aber jetzt genau das gleiche.

    Was mache ich falsch?

    Mfg Björn
    §4.1.f
    Das "Ausgraben" von veralteten Topics durch Neuerstellung eines Postings ist bei Fragen zum exakt gleichen Thema erlaubt.

    Ich würde mal subjektiv behaupten, dass es das gleiche Thema ist.

    @Björn:
    • Lösche in den Projekteigenschaften unter Verweise den Verweis auf die Dll.
    • Wenn Du Fehler hast, füge vor jeder fehlerhaften Zeile 'ReplaceHere' ein:

      VB.NET-Quellcode

      1. 'ReplaceHere'Dim Foo As Bar...

      Dadurch hast Du keine Compilerfehler.
    • Geh in den Bin-Ordner des Projektes.
    • Lösche alle Inhalte aus dem Debug und dem Release Ordner. Wenn sich die *.vshost.exe Dateien nicht löschen lassen ist das in Ordnung.
    • Kompiliere das Dll-Projekt erneut (und lass die Dll im Release-Ordner!).
    • Füge den Verweis wieder hinzu (und navigierst Du jetzt in den Release-Ordner des Dll-Projektes).
    • Drücke Ctrl+F, wechsle zu Ersetzen und ersetze alle 'ReplaceHere' durch nichts. Dadurch musst Du nicht manuell das Projekt durchgehen und alle Zeilen finden, die Du auskommentiert hast.


    Wenn Du jetzt im Dll-Projekt was änderst, musst Du nur neu erstellen und dann erkennt Visual Studio automatisch, dass sich die Dll, auf die verwiesen wird, geändert hat. Das erspart Dir einen Haufen Arbeit.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

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

    *Vollzitat entfernt*


    Habe es genau so gemacht. Geht aber immer noch nicht.
    Ist wieder so als sei die DLL nicht da.
    Bzw es werden Teile der DLL angezeigt aber einer der wichtigsten Funktionen fehlt.

    Mfg Björn


    Edit by Dodo:
    Das Zitieren des vorgänger Posts is völlig unnötig und auch laut den Boardregeln nicht erlaubt
    -> Vollzitat entfernt

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

    Kann es sein, dass in der .dll die Klasse nicht als Public Class deklariert ist.
    Wenn sie also nur ne Class ist funkt das nicht.


    Edit:// Bitte keine Vollzitate. Besonders nicht wenn der zu Zitierende über dir ist ;D
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    *Vollzitat entfernt*

    Es ist ne Public Class ;)


    Mfg Björn


    Edit by Dodo:
    Das Zitieren des vorgänger Posts is völlig unnötig und auch laut den Boardregeln nicht erlaubt
    -> Vollzitat entfernt

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

    Schade, dann kann ich dir nicht helfen. bzw. sind die Funktionien auch Public?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    1. Verweis auf die Dll erstellen
    2. In DEINEM Projekt oben Import NamespaceDerKlasseInDerDll
    3. Unten Klasse verwenden (sofern sie Public deklariert ist)
    4. Alternativ: 2. aulassen und stattdessen Namespace.Klasse....


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    a) Importiert werden nur Namespaces
    b) Vor einer "Funktion"(in oop heißt das methode) kommt erstma ne Klasse, Struktur,...


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Beispiel:

    VB.NET-Quellcode

    1. 'Dll: Dateiname = Foo.dll
    2. 'Projekteinstellungen: Stammnamespace = FooNamespace
    3. Public Class Bar
    4. Public Shared Function GetStuff() As String
    5. Return "Stuff"
    6. End Function
    7. End Class
    8. 'Projekt:
    9. 'Verweis auf C:\...\DesktopOderSo\Projektmappenname\Projektname\bin\Release\Foo.dll
    10. 'So:
    11. Imports FooNamespace
    12. Public Class Form1
    13. Sub Test()
    14. MessageBox.Show(Bar.GetStuff)
    15. End Sub
    16. End Class
    17. 'Oder so:
    18. Public Class Form1
    19. Sub Test()
    20. MessageBox.Show(FooNamespace.Bar.GetStuff)
    21. End Sub
    22. End Class


    @thefiloe: Es ist auch möglich, Klassen zu importieren. Dadurch werden ihre statischen Methoden sichtbar:

    VB.NET-Quellcode

    1. A = Math.Sin(B)
    2. '-->
    3. Imports Math
    4. '...
    5. A = Sin(B)
    Hat nicht viel Sinn, wenn der Klassenname nicht irgendwie > 80 Zeichen ist

    Was aber Sinn ergibt:

    VB.NET-Quellcode

    1. A = Ziemlich.Langer.NamespacName.Klassenname.Sin(B)
    2. '-->
    3. Imports Bla = Ziemlich.Langer.NamespacName.Klassenname
    4. '...
    5. A = Bla.Sin(B)
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils