Externe DLL/Lib importieren

Anfängerfragen zum Programmieren mit PureBasic.
Oliver13
Beiträge: 35
Registriert: 08.05.2010 15:49

Externe DLL/Lib importieren

Beitrag von Oliver13 »

Hallo zusammen,

es gibt ja einige interessante und kostenlose Customcontrols, die als LIB bzw. DLL vorliegen und ich weiß, daß man diese dann grds. mittels IMPORT auch in Purebasic nutzen könnte.

Interessant wären beispielsweise
http://www.codeproject.com/KB/library/cuctrl.aspx
http://www.codeproject.com/KB/list/html_listctrl.aspx
http://www.codeproject.com/KB/cpp/ProgressTaskList.aspx

Nun geht es aber schon los:
mit welchem Tool erstelle ich die erforderlichen Deklarationen der in der Lib enthaltenen Funktionen bzw. wandele die vorliegenden .h (in C) um nach Purebasic ?

Und wenn es dann importiert ist - wie kann ich so ein Control dann als Gadget in PB nutzen ?

Wäre super, wenn mir da jemand einen Tipp hätte oder vielleicht sogar ein obiges Control exemplarisch für alle in ein Projekt umsetzen könnte.

Danke + viele Grüsse
Oliver
mbuettner
Beiträge: 88
Registriert: 14.05.2010 15:53
Computerausstattung: 3 GB RAM, Windows 7 32-Bit Home Premium
Wohnort: daheim
Kontaktdaten:

Re: Externe DLL/Lib importieren

Beitrag von mbuettner »

Funktionen einer DLL kann man mit Prototypes aufrufen (siehe Hilfe), wenn du die .h-Datei der DLL hast, dann kannst du nach Funktionen wie z.B.

Code: Alles auswählen

int quardrat ( int a ) {
  return a * a;
}
oder

Code: Alles auswählen

void sagWas ( const char* Text ) {
  MessageBox(0,Text,"Hallo von der MessageBox!",MB_OK)
}
suchen und dann die erste Zeile (z.B. int quadrat ( int a )) in PureBASIC folgendermaßen schreiben:

Code: Alles auswählen

Prototype Quadrat( Zahl.i )
; oder
Prototype sagWas (Text.s)
Diese dann folgendermaßen benutzen:

Code: Alles auswählen

OpenLibrary(0,"DeineDLL.dll")
quadrat.Quadrat = GetFunction(0,"quadrat")
quadrat(2)
;bzw
nachricht.sagWas = GetFunction(0,"sagWas")
nachricht("Hallo")
Eine andere Alternative wäre natürlich noch CallFunctionFast, was ich aber jetzt hier nicht beschreibe, da Prototypes (anscheinend) die bessere Möglichkeit ist.

P.S: Du kannst mir die .h-Datei schicken, ich kann die Funktionen heraussuchen, wenn du willst.
Bild
Bild
Die täglich beförderte Datenmenge des Internets beträgt 415 Petabyte oder 445.602.856.960 Megabyte!
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Externe DLL/Lib importieren

Beitrag von Bisonte »

mbuettner hat geschrieben:Eine andere Alternative wäre natürlich noch CallFunctionFast, was ich aber jetzt hier nicht beschreibe, da Prototypes (anscheinend) die bessere Möglichkeit ist.
Nicht nur anscheinend besser... CallFunction ist laut Aussage unserer "Gurus" nur noch aus
Abwärtskompatibilitätsgründen ( <= cooles Wort für Hangman :D ) im Funktionsumfang von PB.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Antworten