fbpx
Welcome, Guest
Username: Password: Remember me
Hier wird Deutsch gesprochen
  • Page:
  • 1

TOPIC:

DLL mit exportierten Functions 14 Jul 2021 11:03 #19081

  • HaglMi


  • Posts: 12
  • Hallo,

    kann ich in x# eine 32-Bit-DLL mit exportierten Funktionen erzeugen, die ich zB. mit xHarbour per LoadDll / DllCall aufrufen kann?

    Vielen Dank
    mfg Michael Hagl

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 14 Jul 2021 11:12 #19082

    • wriedmann
    • wriedmann's Avatar


  • Posts: 2685
  • Hallo Michael,
    klar kannst Du das.
    Wird hier beschrieben:
    www.codeproject.com/Tips/695387/Calling-...m-unmanaged-C-Cplusp
    stackoverflow.com/questions/778590/calling-c-sharp-code-from-c
    Allerdings: Du kannst keine Xbase-Datentypen verwenden.
    An und für sich sollte auch der Macrocompiler automatisch geladen werden.
    Getestet habe ich das allerdings nicht. Da der X# Compiler denselben Code erzeugt wie der C# Compiler, sollten obige Anweisungen funktionieren.
    Ich nutze in meinen VO-Applikationen ganz massiv X#-DLLs, aber mache das über die COM-Schnittstelle, weil ich da auch Objekte und Strings übergeben kann, die Umsetzung zwischen ANSI und UTF8 automatisch passiert und zusätzlich auch die Bitness kein Problem darstellt (die DLL kann auch 64 Bit oder AnyCPU sein).
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 14 Jul 2021 16:31 #19083

    • HaglMi


  • Posts: 12
  • Hallo Wolfgang,

    danke für die schnelle Antwort. Mein Junior hat die Aufgabe von mir bekommen, in c# eine DLL zu schreiben, die einige Sachen per DotNet erledigt und die ich aus xHb aufrufen kann. Das hat ihm schon weiter geholfen, aber er hat noch das Problem mit der Rückgabe von Daten.
    Vielleicht kann ich ihn mal dazu überreden, sich mit x# zu befassen, zum Installieren habe ich ihn heute schon genötigt :)

    mfg Michael

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 15 Jul 2021 19:16 #19097

    • HaglMi


  • Posts: 12
  • Hallo Wolfgang,
    kannst Du ein bisschen Quellcode zeigen, wie Du das in x# machst, vor allem die Datenrückgabe über Pointer

    Vielen Dank im Voraus
    Michael

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 15 Jul 2021 20:14 #19099

    • wriedmann
    • wriedmann's Avatar


  • Posts: 2685
  • Hallo Michael,
    wie geschrieben, nutze ich ausschließlich COM dafür.
    Was anderes müsste ich erst probieren zu implementieren.
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 15 Jul 2021 20:24 #19100

    • HaglMi


  • Posts: 12
  • Hallo Wolfgang,

    das mit COM habe ich überlesen.
    Mein Junior hat jetzt auch angefangen, das über COM zu lösen, da wir per DLLCall (würde mittlerweile funktionieren) mit der Rückgabe der Daten über einen Pointer ziemliche Probleme haben. Er hat nicht rausgefunden, wie der zurückgegebene Wert der per Referenz übergeben Variablen codiert ist. Das Ergebnis wird in der xHb-Anwendung als Datenmüll angezeigt.

    Bemühe Dich nicht weiter!

    Michael

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 15 Jul 2021 20:30 #19101

    • wriedmann
    • wriedmann's Avatar


  • Posts: 2685
  • Hallo Michael,
    um Speicherbereiche über die C-Schnittstelle zu übergeben, müsste der aufrufende Prozess einen Pointer mit übergeben, samt der Angabe, welche Länge der entsprechend allokierte Speicherbereich hat.
    Der aufgerufene Prozess müsste dann sein Ergebnis in den entsprechenden Speicherbereich kopieren, und der aufrufende Prozess diesen Speicher nach dem Auslesen wieder freigeben.
    So läuft das z.B. im Windows API.
    Unter COM brauchst Du Dich um alle diese Geschichten nicht zu kümmern. Mit VO geht das dann so:
    docs.xsharp.it/doku.php?id=com_module_sample
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 28 Jul 2021 20:18 #19190

    • HaglMi


  • Posts: 12
  • Hallo Wolfgang,
    mein Junior hat es in c# hingekriegt, ich habe ihn dann sogar überreden können, dass er es nach x# portiert.
    Ich verwende das Com-Objekt in xHarbour. Er ist jetzt gerade dabei, mir eine Reihe von Klassen zu implementieren, vor allem einen SMTP Email-Client mit Vorschau und eine SFTP-Klasse und noch ein paar so Kleinigkeiten, die in xHb schlecht gehen.

    Vielen Dank für Deine Hilfe
    Michael

    Please Log in or Create an account to join the conversation.

    DLL mit exportierten Functions 28 Jul 2021 21:06 #19194

    • wriedmann
    • wriedmann's Avatar


  • Posts: 2685
  • Hallo Michael,
    Du wirst lachen, aber ein SMTP-Client (mit SSL-Support) ist auch eine der COM-Libraries, die ich in den meisten VO-Programmen nutze.
    Dann kommen noch welche dazu, die auf Webservices zugreifen, oder eine Excel-DLL, sowie diverse DLLs zum Zugriff auf PostgreSQL und SQLite.
    Ohne die ganzen in X# geschriebenen COM-Libraries hätte ich die letzten Jahre ganz massive Probleme mit meinen VO-Programmen bekommen.
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    • Page:
    • 1
    Moderators: wriedmann