Klassenbibliothek (DLL) erstellen ohne expliziten Einstiegspunkt

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Klassenbibliothek (DLL) erstellen ohne expliziten Einstiegspunkt

    Wir haben einen Epson Roboter, welcher in seiner Steuerung auf einen DLL zugreifen und dort Funktionen aufrufen kann. Wenn ich nun eine DLL mit VB NET erstelle und in die Steuerung einbinde, dann kommt die Fehlermeldung, dass er die Funktion nicht finden kann. Das selbe habe ich auch wenn ich die DLL in ein VB NET Projekt per

    Quellcode

    1. Declare Function
    einbinde. Es ist Absicht, dass ich die Funktion nicht als Verweis einbinde. Wie muss ich den Quellcode Klassenbibliothek ändern, dass die Funktion gefunden wird? Das er die Datei nicht findet, schließe ich hier aus!!!

    Quellcode EpsonRoboter.dll:

    Quellcode

    1. ​Public Module Main
    2. ''' <summary>
    3. ''' Sendet eine Meldung an den SysLog Server
    4. ''' </summary>
    5. ''' <param name="msg"></param>
    6. ''' <returns>erfolg</returns>
    7. Public Function SysLog(msg As String) As Boolean
    8. Dim Ergb As Boolean = False
    9. Try
    10. ' Initialisiere Remote UDP Klasse
    11. Dim udp1 As New RemoteUDP
    12. ' Sende UDP Nachricht an den SysLog Server
    13. udp1.Senden("EpsonRoboter " & msg, "10.1.1.4", "514")
    14. ' Gebe Speicher frei
    15. udp1 = Nothing
    16. Ergb = True
    17. Catch ex As Exception
    18. End Try
    19. Return Ergb
    20. End Function
    21. End Module


    Quellcode der Test VB NET Anwendung:

    Quellcode

    1. Declare Function xyz Lib "EpsonRoboter.dll" Alias "SysLog" (msg As String) As Boolean
    2. Private Sub Button8_Click(sender As System.Object, e As System.EventArgs) Handles Button8.Click
    3. xyz("Test")
    4. End Sub


    Fehlermeldung von Visuell Basic: System.EntryPointNotFoundException
    Der Einstiegspunkt "SysLog" wurde nicht in der DLL "EpsonRoboter.dll" gefunden.
    Ist diese DLL wirklich in VB geschrieben? Wenn ja, warum bindest Du sie nicht direkt über die Projektverweise in Dein Programm ein? Mir ist klar, dass das Deine Frage nicht beantwortet, aber das wäre einfacher. Und Du könntest sehen, welche Funktionen wirklich zur Verfügung stehen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo Zusammen,
    ich hab nun das Problem nicht gelöst aber erkannt.

    @VaporiZed: Ja, die DLL ist in VB geschrieben (selber geschrieben) und kenne die Namen der Funktion

    => Das Problem ist, dass eine "managed" DLL nur von einer VB NET Anwendung gelesen und per Verweis eingebunden werden kann. Eine unmanaged DLL wie ich sie für unseren Epson Roboter suche, kann man nur durch C++ oder ähnliche Programmiersprachen erstellen.

    Danke euch trotzdem!
    @TBo Willkommen im Forum.
    Kannst Du mal die DLL und die Dir bekannten Deklarationen der DLL-Routinen posten?
    Pack beides zusammen in eine ZIP und dann Erweiterte Antwort => Dateianhänge => hochladen.
    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!