Seite 2 von 3

Verfasst: 03.01.2005 13:58
von brotkasten-deluxe
Hmm und was is wenn ich die ganze API einbeziehen will ? muss ich jede bestimmte ddl einzeln laden und wie teile ich ihr die befehle zu? :?

Verfasst: 03.01.2005 14:04
von DarkDragon
:? http://www.reelmedia.org/pp/library/index.html Damit musst du die DLLs laden und einfach die Funktionen durch die User aufrufbar machen.

Verfasst: 03.01.2005 14:40
von brotkasten-deluxe
Hmm mich würd interessieren wie PureBasic das selbst meistert? :?

Verfasst: 03.01.2005 15:26
von Zaphod
genau so, nur halt intern.

Verfasst: 03.01.2005 17:04
von brotkasten-deluxe
kann es sein dass PB nur auf WinAPI basiert?

Ich meine dass die befehle mit winapi aufgebaut sind :?

Verfasst: 03.01.2005 17:11
von Zaphod
unter windows zumindest... worauf denn auch sonst ;)

Verfasst: 03.01.2005 17:53
von brotkasten-deluxe
Zaphod hat geschrieben:unter windows zumindest... worauf denn auch sonst ;)
schön zu wissen :allright:

Verfasst: 03.01.2005 21:11
von DarkDragon
:? Frage an Danilo(den Compilerprofi): Muss man sowas wie die WinAPI nicht weit am Anfang beim richtigen Compilerbau kennen?

@brotkasten: Die Libraries in dem PureLibraries\ und PureLibraries\Windows oder wie auch immer sind praktisch wrapper zur direkten benutzung der Befehle in PB.

Verfasst: 03.01.2005 21:56
von Danilo
DarkDragon hat geschrieben::? Frage an Danilo: Muss man sowas wie die WinAPI nicht weit am Anfang beim richtigen Compilerbau kennen?
Nein. WinAPI hat damit ja erstmal nichts zu tun, schliesslich
kannst Du Compiler für alles Mögliche machen.
DarkDragon hat geschrieben:@brotkasten: Die Libraries in dem PureLibraries\ und PureLibraries\Windows oder wie auch immer sind praktisch wrapper zur direkten benutzung der Befehle in PB.
Das ist kein Wrapper, das sind Import-Libraries zum linken
und noch ein paar Header, so daß PB die Funktionen kennt.

Mit dem assemblieren und linken sollte man sich da schon
ein bissl auskennen, bevor man sowas macht.
Erstmal muß der Compiler eine Funktion kennen, z.B. durch
Declare-Anweisungen:
Declare Beep alias "Beep@8" Lib "user32" (Long, Long) : Long

Damit weiß der Compiler das die Funktion "Beep" in der user32.lib
ist (das ist die Import-Lib für die DLL), und das 2 Long-Args
übergeben werden, sowie die Rückgabe auch long ist.

Bei PB funktioniert das über interne Header-Dateien. Die muß
dann nicht der User einbinden wie in FB, C usw., sondern PB
macht das automatisch.

Ruft der User nun Beep(800,100) auf, ist Dein generierter
Code ganz einfach:

Code: Alles auswählen

PUSH dword 100
PUSH dword 800
CALL Beep@8
Diese Infos (2 Argumente des Typs Long usw.) hast Du aus
den (internen) Declare und kannst somit checken ob ein
Fehler vorliegt (z.B. wenn der User einen String statt Long
übergibt, oder nur ein Argument statt 2).

Das wird assembliert, und beim linken wird noch die Import-
Library user32.lib eingebunden und fertig.

Verfasst: 04.01.2005 12:52
von hardfalcon
@DarkDragon: Ja, was das mitliefern der dlls angeht, hast du recht. da habe ich mich wirklich geirrt.
@Danilo: ich kann zwar kein C/C++, aber in den Codesamples im API-Guide (die sind ja in C++), werden API-Funktionen immer zuerst mittels "declare" "geladen". Das hiesse ja, dass man mittels C++ ALLE API-Befehle nutzen kann, ohne dass diese als Libs geladen werden müssen, oder? Hat PB auch eine solche "declare"-Funktion (da es nicht ALLE API-Befehle kann)?

cya
Pascal