How to use dlls

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

How to use dlls

Beitrag von Bauer321 »

Also ich bin ja noch relativ neu und wollte mal fragen wie man dlls richtig mit Lazarus verwendet

hauptsächlich wäre erstmal meine Frage was ich machen muss damit ich diese benutzen kann also wie ich diese "verknüpfen" kann
und auch ihre Funktion nutzen kann.

wenn ich zum beispiel die bass.dll hab(von u4seen oda so), ist ja wenn ich das richtig sehe ganz gut dokumentiert...

da steht dann z.B. "BOOL BASS_Start();" für Play

kann man das dann so benutzen?
procedure BOOL BASS_Start(); stdcall; external 'bass.dll' name 'play';

oder ist das noch schwerer oder ienfach nen komplett falscher ansatz?
www.mcpatcher.net | www.hoeper.me

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: How to use dlls

Beitrag von Socke »

In C werden Funktionen ein wenig anders deklariert als in Pascal:
  • Rückgabetyp (void, wenn keiner -> procedure)
  • Name
  • Parameterliste
    • Typ
    • Parametername
Die Aufrufkonvention ist in C üblicherweise cdecl; stdcall ist normalerweise auch extra vermerkt (zumindest in der Dokumentation). Boolean ist genau ein Byte groß; in C wird aber üblicherweise eine andere Größe (vier Byte = Longbool) verwendet. Eventuell findest du in der Unit ctypes auch einige Typäquivalente.
Die externe Referenzierung ist richtig. Daher wäre wohl bei dir richtig:

Code: Alles auswählen

function BASS_Start(): Longbool; cdecl; external 'bass.dll' name 'play';
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: How to use dlls

Beitrag von creed steiger »

Bei Bass sind sehr gute Delphi Demos dabei,die solltest du dir mal anschauen.
(mit dem Konverter geht das relativ gut)

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: How to use dlls

Beitrag von theo »

Anonsten kommt mit FPC noch das wunderbare Tool "h2pas". Damit kann man aus C Headern Pascal Bindings erstellen.
Klappt recht gut, ein bisschen Nachbearbeitung ist manchmal erforderlich.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: How to use dlls

Beitrag von Bauer321 »

theo hat geschrieben:Anonsten kommt mit FPC noch das wunderbare Tool "h2pas". Damit kann man aus C Headern Pascal Bindings erstellen.
Klappt recht gut, ein bisschen Nachbearbeitung ist manchmal erforderlich.
gibts da irgendwo ne dokumentation zu?
www.mcpatcher.net | www.hoeper.me

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: How to use dlls

Beitrag von theo »

Bauer321 hat geschrieben: gibts da irgendwo ne dokumentation zu?
http://lmgtfy.com/?q=freepascal+h2pas" onclick="window.open(this.href);return false;

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: How to use dlls

Beitrag von Bauer321 »

hört sich ganz gut an guck ich mal morgen genauer an
www.mcpatcher.net | www.hoeper.me

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: How to use dlls

Beitrag von carli »

Bauer321 hat geschrieben: kann man das dann so benutzen?
procedure BOOL BASS_Start(); stdcall; external 'bass.dll' name 'play';

oder ist das noch schwerer oder ienfach nen komplett falscher ansatz?
Wenn du das ".dll" noch weglässt, hast du's sogar plattformunabhängig gelöst.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: How to use dlls

Beitrag von Bauer321 »

hmm joa nur das bringt nicht so viel da der rest meist windows only ist^^(also jetzt speziell auf mich bezogen)
www.mcpatcher.net | www.hoeper.me

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: How to use dlls

Beitrag von carli »

Bauer321 hat geschrieben:hmm joa nur das bringt nicht so viel da der rest meist windows only ist^^(also jetzt speziell auf mich bezogen)
Dann machst du's genau so, wie du's geschrieben hast. (manchmal sind die Funktionen aber cdecl statt stdcall)

Antworten