DLL

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: DLL

Beitrag von abacom » Freitag 12. Februar 2010, 08:57

Leider haben wir kein VB, da sind andere Spezialisten gefragt.
ABACOM support

Mike D
Beiträge: 528
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: DLL

Beitrag von Mike D » Freitag 12. Februar 2010, 09:50

VB kann zwar Dateien vom Typ DLL erstellen, die entsprechen aber nicht dem Standard. D.h. sie exportieren ihre Funktionen nicht.
Es soll möglich sein dieses mit mit einem Hack zu umgehen bei dem dem Linker ein zusätzlicher Parameter untergeschoben wird.
Dies ist mir aber nicht gelungen.

Mike

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: DLL

Beitrag von abacom » Freitag 12. Februar 2010, 09:53

Gilt dieses für beide Funktionstypen (die für C und Delphi)? Besser lassen sich vermutlich die C-Varianten nehmen.
ABACOM support

Mike D
Beiträge: 528
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: DLL

Beitrag von Mike D » Freitag 12. Februar 2010, 10:27

Das gilt für beide Typen. Bei VB ist offenbar aus Gründen die nur Microsoft versteht das Exportieren der Funktionen unterdrückt.
Ich weis nicht ab das für ActiveX DLLs nicht nötig ist, denn die lassen sich soweit ich es verstanden habe erzeugen.
Der von VB benutzte Linker kann die Exports machen, denn es gibt angeblich diesen Hack, bei dem wird ein Proxy-Linker dazwischen gehängt der nichts weiter macht als einen weiteren Parameter an den origimal Linker zu übergeben.
Theretisch müsste man das sogar von Hand machen können indem man den Linker auf der Komandozeile aufruft.
Aber ich merke schon wieder meine Allergie gegen VB und möchte mich damit eigentlich nicht weiter beschäftigen.

Ich habe im Hinterkopf bereits einen Text zu Thema DLLs in PL, weis aber noch nicht ob und wann ich die Zeit finde den zu Datei zu bringen.

Grüße

Mike

habe
Beiträge: 36
Registriert: Samstag 18. Oktober 2008, 18:51

Re: DLL

Beitrag von habe » Dienstag 16. Februar 2010, 18:37

Moin,

ich hab mir jetzt mal PowerBasic gekauft und damit ein einfaches Beispiel (Select Case) erstellt. Vielleicht kann das ja mal einer testen. Also bei mir funktioniert es.
Versuche jetzt Strings zu verarbeiten, das krieg ich aber irgendwie nicht auf den Schirm.

Bis dann
habe
Dateianhänge
SelectCase.rar
(6.45 KiB) 331-mal heruntergeladen

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: DLL

Beitrag von abacom » Mittwoch 17. Februar 2010, 08:44

Jau, alles bestens.
ABACOM support

habe
Beiträge: 36
Registriert: Samstag 18. Oktober 2008, 18:51

Re: DLL

Beitrag von habe » Donnerstag 18. Februar 2010, 19:01

Tach,

hier mal das Counter – Beispiel aus der PL - Hilfe als PowerBasic DLL
Dateianhänge
Counter.rar
(7.21 KiB) 303-mal heruntergeladen

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: DLL

Beitrag von KAKTUS » Donnerstag 18. Februar 2010, 23:42

@Habe
Gehts auch erst mal ganz einfach wie gewünscht mit einem Eingang und einen Ausgang?

Warum hast du das Powerbasic gekauft? Kennst du diese IDE:
Ich habe mir das Packet "The Open Source Development Environment for .NET" installiert
http://www.icsharpcode.net/OpenSource/SD/

Oder hast du es schon mal mit dem kostenlosen Visual Studio 2008 Express probiert?
http://www.microsoft.com/germany/Express/default.aspx
stachlige Grüße, Kaktus

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: DLL

Beitrag von abacom » Freitag 19. Februar 2010, 08:59

@Kaktus: Nach meinem Kenntnisstand lassen sich mit den beiden genannten .NET IDE´s keine DLL´s kompilieren.
Man überzeuge mich vom Gegenteil. Ich bleib´ bei Delphi.
Wer es unbedingt mit VB6 probieren will, sollte vorher das hier lesen...
http://windowsdevcenter.com/pub/a/windo ... e_dll.html
(Auweih! Da scheinen dann ein paar Euros für PowerBasic wohl gut angelegt.)
ABACOM support

habe
Beiträge: 36
Registriert: Samstag 18. Oktober 2008, 18:51

Re: DLL

Beitrag von habe » Freitag 19. Februar 2010, 13:41

Moin,

@Kaktus: Als Anlage, hoffe ich ein einfaches Beispiel mit PowerBasic.

Warum PowerBasic? Weil es damit geht und es ist halt Basic.
Mit VB6 mag es auch gehen, ich hab’s nicht hinbekommen.
Ich glaube auch, dass es mit den beiden anderen IDE’s nicht gehen wird und wenn dann nur sehr Aufwendig.


P.S. Also die Funktion CNumOutputsEx funktioniert auch mit PowerBasic.
Was ich immer noch nicht hinbekommen habe sind Strings.
Dateianhänge
Beispiel.rar
(5.26 KiB) 321-mal heruntergeladen

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: DLL

Beitrag von KAKTUS » Sonntag 21. Februar 2010, 20:32

@ALL

Danke für Eure Beiträge.

@Abacom
Schade, wäre auch zu einfach gewesen wenn man mit einem kostenlosen Tool echte DLL`s erzeugen kann.

@habe
Danke für dein Beispiel. Das ist wirklich einfach und gut dokumentiert und ich habe es verstanden.
stachlige Grüße, Kaktus

Step
Beiträge: 87
Registriert: Dienstag 14. Oktober 2008, 14:25

Re: DLL

Beitrag von Step » Montag 22. Februar 2010, 14:06

@Kaktus
Es gibt kostenlose Tools, mit denen man eine DLL erzeugen kann - s. mein Posting weiter oben (Lazarus).

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: DLL

Beitrag von KAKTUS » Montag 22. Februar 2010, 18:34

Hallo Step,

danke für den Hinweis auf Lazarus.

Frage:
Hast du damit schon mal eine Profilab taugliche DLL erstellt, und falls ja kannst du hier mal ein ( einfaches ) Beispiel posten?
stachlige Grüße, Kaktus

habe
Beiträge: 36
Registriert: Samstag 18. Oktober 2008, 18:51

Re: DLL

Beitrag von habe » Montag 22. Februar 2010, 20:48

Hallo,

vielleicht geht es auch mit dem kostenlosen FreeBasic. Damit soll man auch DLL erstellen können. Es hat jedenfalls eine Export Anweisung.

http://www.freebasic-portal.de/

Müsste man mal testen

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: DLL

Beitrag von KAKTUS » Montag 22. Februar 2010, 21:14

Hallo Leute,

ich kann zwar mit Bascom einen AVR proggen, aber mit allen anderen Sachen tu ich mir schwer. In Sachen DLL seit ihr die Profis, vielleicht könnt ihr dass für mich mal testen. Wenn ich ein funktionsfähiges Grundgerüst habe kämpfe ich mich schon durch.
@habe
Haste Zeit/Lust Freebasic mal auf DLL Tauglichkeit zu testen?
stachlige Grüße, Kaktus

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: DLL

Beitrag von KAKTUS » Montag 22. Februar 2010, 21:20

Auf der Freebasic Webseite habe ich folgendes gefunden:
Frage:

Wie kann ich mit FreeBasic DLLs erstellen?

Antwort:

Mit FreeBASIC für Windows kann man echte Einsprungspunkt-DLLs (DLL = Dynamic Link Library) erstellen, die sich in sehr vielen anderen Programmiersprachen wie Microsoft(R) VisualBasic oder Borland Delphi(R) verwenden lassen. Im Gegensatz zu ActiveX-DLLs enthalten sie nicht im Wesentlichen Klassen, sondern Funktionen. Die mit FreeBASIC erstellten DLLs können in anderen Programmiersprachen eingebunden werden, um aufwändigere Prozesse auszuführen, denn mit FreeBASIC erstellte Anwendungen und Programmbibliotheken sind im Vergleich beispielsweise zu VB-Anwendungen sehr schnell.

DLLs werden in FreeBASIC erstellt, indem man den Compiler mit dem Kommadozeilenparameter -dll startet:
fbc.exe -dll source.bas

Ferner muss das Programm, das zur DLL compiliert werden soll, bestimmte Anforderungen erfüllen, damit für den Compiler erkennbar ist, welche Funktionen die spätere DLL "nach außen hin" zur Verfügung stellen soll. In diesem Zusammenhang verwendet man die Schlüsselwörter BefehlsreferenzeintragEXPORT und ggf. BefehlsreferenzeintragEXTERN. Beispiele für DLLs in FreeBasic und zur Einbindung in anderen Programmiersprachen finden sich im FreeBasic-Installationspaket unter
<FreeBasicPfad>\examples\dll\

[Zurück zur FAQ-Übersicht]
stachlige Grüße, Kaktus

Step
Beiträge: 87
Registriert: Dienstag 14. Oktober 2008, 14:25

Re: DLL

Beitrag von Step » Dienstag 23. Februar 2010, 12:36

Hallo Kaktus,

ich habe eben mal die Beispiel DLL (Counter-DLL) von Abacom mit Lazarus erstellt bzw. nach Lazarus konvertiert. Es gibt innerhalb von Lazarus ein Tool zum Konvertieren der Delphi-Projekte und damit geht es (fast) einwandfrei (es muss nur am Anfang noch zusätzlich die Interfaces-Unit eingebunden werden, sonst gibt es einen Fehler beim compilieren). Wer Delphi gewohnt ist, der kommt eigentlich schnell damit zurecht ...

Gruß Step

BKGMX
Beiträge: 132
Registriert: Montag 7. Dezember 2009, 10:37
Wohnort: Berlin

Re: DLL

Beitrag von BKGMX » Dienstag 23. Februar 2010, 16:38

@step
Ich habe mal vor einiger Zeit (ca. 1,5 Jahre) mit Lazarus-DLLs gearbeitet.
Da gab es immer ein Problem mit dem Aufruf von Dialogen
aus der DLL. Ist das in neueren Lazarus Versionen gelöst worden?
Also mich würde da interessieren, wie Du den Dialog eingebunden hast,
also die Funktion: Procedure Configure(PUser: PDLLParams);
Da gab es bei mir immer Laufzeitfehler beim Aufruf.
Vielleicht kannst Du den Teil mal posten.

Gruß BKGMX

Step
Beiträge: 87
Registriert: Dienstag 14. Oktober 2008, 14:25

Re: DLL

Beitrag von Step » Dienstag 23. Februar 2010, 17:12

@BKGMX
Zu der Zeit habe ich auch mal mit Lazarus experimentiert und es ganz schnell wieder in die Ecke gestellt ... ;) ... aber mittlerweile ist es wirklich sehr ausgereift.
Ich habe das Beispielprojekt von Abacom 1:1 durch das Konvertierungstool von Lazarus erstellt und die erwähnte Interface-Unit manuell eingebunden und dann kompiliert - fertig!

Die meisten Inkompabilitäten ergeben sich aus der Tatsache, dass Lazarus eben nicht nur für Windows sondern plattformübergreifend angelegt ist. Da muss man evtl. an der ein oder anderen Stelle Hand anlegen ...

Step

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: DLL

Beitrag von KAKTUS » Dienstag 23. Februar 2010, 22:58

@Step

Danke für den Lazarus Test

Code: Alles auswählen

Wer Delphi gewohnt ist, der kommt eigentlich schnell damit zurecht ...
Wie gesagt, ich kenne nur Bascom Basic und wäre dir dankbar , sollte dein Projekt funktionieren, wenn du es hier mal als zip hochlädst.
stachlige Grüße, Kaktus

Antworten

Zurück zu „DLL-Programmierung“