visualbasic
Goto Top

Eigene DLL erstellen und einbinden

Hallo,
ich habe eine DLL erstellt mit folgendem Inhalt
Public Class Class1
    Public Shared Function CODE_test(ByVal CODE As String) As Boolean
        Dim Result As Boolean = False
        CODE = CODE.Replace(" ", "")  
        If CODE.Length > 0 Then
            Dim Digits As Integer = CODE.Length
            Dim parity As Integer = Digits Mod 2
            Dim sum As Integer = 0
            For i As Integer = 0 To Digits - 1
                Dim digit As Integer = Val(CODE.Substring(i, 1))
                If i Mod 2 = parity Then digit *= 2
                If digit > 9 Then digit -= 9
                sum += digit
            Next
            Result = ((sum Mod 10) = 0)
        End If
        Return Result
    End Function
End Class

Jetzt würde ich gerne in einem anderen Projekt diese DLL einbinden.
Ich habe es versucht mit
Private Declare Function CODE_test Lib "ClassLibrary1.dll" (ByVal CODE As String) As Boolean  

Geht aber nicht, denn
Der Einsprungspunkt "Code_test" wurde nicht in der DLL gefunden

Was mache ich falsch??
Vielen Dank für eure Antworten!

Chris

Content-Key: 192640

Url: https://administrator.de/contentid/192640

Printed on: April 26, 2024 at 04:04 o'clock

Member: hpbruns
hpbruns Oct 11, 2012 at 17:11:24 (UTC)
Goto Top
Hallo Chris

Ich vermute mal folgendes:
DLL erstellt und kompiliert mit Visual Studio > 6.0
Neues Projekt ebenfalls mit VS > 6.0

Dann musst Du in den Verweisen Deines neuen Projektes die DLL natürlich auch hinzufügen.

Danach kannst Du mit ...

 
Imports ClassLibrary1
.
.
.

Private TestClass As New Class1

Return = TestClass.CODE_Test(xyz)

arbeiten (sehr vereinfacht dargestellt)

Gruß

HaPe
Member: visualbasic
visualbasic Oct 12, 2012 updated at 04:46:33 (UTC)
Goto Top
Zitat von @hpbruns:
(sehr vereinfacht dargestellt)

Danke, leider kenne ich mich nicht so gut aus;
Die DLL und das Projekt wurden Beide mit Microsoft Visual Studio 2010 Express gemacht.
Es heißt, der Einsprungspunkt wurde nicht gefunden.

Oder muss ich vielleicht an dem
Private Declare Function CODE_test Lib "ClassLibrary1.dll" (ByVal CODE As String) As Boolean  
etwas ändern ?

Gruß
Member: MrTrebron
MrTrebron Oct 12, 2012 at 06:16:45 (UTC)
Goto Top
Servus

Zitat von @visualbasic:
Danke, leider kenne ich mich nicht so gut aus;

Und genau deshalb solltest du dich nicht nicht darum kümmern DLLs zu erstellen und irgendwo einzubinden, sondern von Grund auf Programmieren zu lernen.

Wenn ich mich recht entsinne wurde dir schon mehr als genug Literatur empfohlen.

Gruß
Norbert

PS: kommt mir nicht mit deinem "Ich bin erst 14...." gelaber. Wenn man in dem Alter ist das sollte man es direkt richtig anfangen.
Member: MonoTone
MonoTone Oct 12, 2012 at 06:58:15 (UTC)
Goto Top
Private Declare Function CODE_test Lib "ClassLibrary1.dll" (ByVal CODE As String) As Boolean  

So bindet man keine .NET dll's ein, sondern native.
Zum Einbinden deiner .NET dll musst du über Projekt->Verweis hinzufügen und dort deine dll suchen und auswählen.
Ansonsten kann ich mich MrTrebron nur anschliessen..
Member: visualbasic
visualbasic Oct 12, 2012 at 12:16:08 (UTC)
Goto Top
Zitat von @MonoTone:
Private Declare Function CODE_test Lib "ClassLibrary1.dll" (ByVal CODE As String) As Boolean  

So bindet man keine .NET dll's ein, sondern native.
ach so

Zum Einbinden deiner .NET dll musst du über Projekt->Verweis hinzufügen und dort deine dll suchen und
auswählen.
Das weiß ich
Und wie spreche ich die dann an?

Chris
Member: MonoTone
MonoTone Oct 12, 2012 at 12:42:30 (UTC)
Goto Top
Das weisst du?
Offensichtlich ja nicht.

Du sprichst diese über den entsprechenden Namespace und Klassennamen an..
Schreib einfach in deiner KLasse mal oben Imports
Dort sollte der Namespace (welcher meist gleich dem Namen der dll ist) dann via Intellisense erscheinen.
Member: visualbasic
visualbasic Oct 12, 2012 at 12:45:16 (UTC)
Goto Top
Zitat von @MonoTone:
Das weisst du?
Offensichtlich ja nicht.

Du sprichst diese über den entsprechenden Namespace und Klassennamen an..
Schreib einfach in deiner KLasse mal oben Imports
Imports ClassLibrary1.dll
?
Member: MonoTone
MonoTone Oct 12, 2012 at 12:54:10 (UTC)
Goto Top
Funktioniert bei dir im Visual Studio Intellisense (die Autovervollständigung) nicht?
Member: visualbasic
visualbasic Oct 12, 2012 at 12:56:24 (UTC)
Goto Top
Zitat von @MonoTone:
Funktioniert bei dir im Visual Studio Intellisense (die Autovervollständigung) nicht?
Doch, ich kanns bloß gerade nicht aufmachen, weil ich nicht vor meinem eigenen PC bin...
Member: MonoTone
MonoTone Oct 12, 2012 at 12:57:03 (UTC)
Goto Top
Dann probiere es, wenn du es kannst. ;)
Member: visualbasic
visualbasic Oct 12, 2012 at 13:02:17 (UTC)
Goto Top
Zitat von @MonoTone:
Dann probiere es, wenn du es kannst. ;)
Habs jetzt mit TeamViewer gemacht. Ja bei Imports geht die Vervollständigung
Member: visualbasic
visualbasic Oct 12, 2012 at 13:04:33 (UTC)
Goto Top
Zitat von @visualbasic:
> Zitat von @MonoTone:
> ----
> Dann probiere es, wenn du es kannst. ;)
Habs jetzt mit TeamViewer gemacht. Ja bei Imports geht die Vervollständigung

Danke @MonoTone
Durch meinen gesunden Menschenverstand und deiner Hilfe bin ich jetzt zu folgendem Ergebnis gekommen:
Imports ClassLibrary1

Public Class Class1

    Private Sub Button1_Click() Handles Button1.Click

        If ClassLibrary1.Class1.CODE_test(TextBox1.Text) = True Then
            MsgBox("ok")  
        Else
            MsgBox("ungültig")  
        End If
    End Sub
End Class
Member: MonoTone
MonoTone Oct 12, 2012 at 13:23:38 (UTC)
Goto Top
Wenn du den Namespace ClassLibrary1 importierst, brauchst du diesen eigentlich nicht mehr explizit mit anzugeben bei If ClassLibrary1.Class1

So kannst du auch ohne Imports arbeiten.
Das Imports verkürzt dir lediglich die Schreiberei in VB.
Du kannst dann schreiben If Class1.Code .. bla
Member: visualbasic
visualbasic Oct 12, 2012 at 13:34:13 (UTC)
Goto Top
Zitat von @MonoTone:
Wenn du den Namespace ClassLibrary1 importierst, brauchst du diesen eigentlich nicht mehr explizit mit anzugeben bei If
ClassLibrary1.Class1

So kannst du auch ohne Imports arbeiten.
Das Imports verkürzt dir lediglich die Schreiberei in VB.
Du kannst dann schreiben If Class1.Code .. bla

Danke!
Und wenn ich ganz oft
My.Computer.FileSystem
brauch, wie kann ich mir das sparen mit Imports?

Gruß
Member: MonoTone
MonoTone Oct 12, 2012 at 13:37:59 (UTC)
Goto Top
Ja...probiere es doch einfach aus Junge!
Member: visualbasic
visualbasic Oct 12, 2012 at 13:58:22 (UTC)
Goto Top
Zitat von @MonoTone:
Ja...probiere es doch einfach aus Junge!
Hab ich schon; ich finds nicht
Member: MonoTone
MonoTone Oct 12, 2012 at 14:02:31 (UTC)
Goto Top
Verwende den My Namespace nicht.
Nimm System.File.Io
Member: visualbasic
visualbasic Oct 12, 2012 at 14:05:05 (UTC)
Goto Top
Zitat von @MonoTone:
Verwende den My Namespace nicht.
Nimm System.File.Io
Aber dann habe ich zum Beispiel bei
WriteAllText
den APPEND-Parameter nicht