1.
Du schreibst einen Quelltext und den Kompilierst du mit PureBasic auf dem Betriebssystem deiner wahl. Als Beispiel z.B. mit Windows Kompiliert erhältst du eine *.exe die nur unter Windows lauffähig ist!
Nun nimmst du den selben Quelltext und den Kompilierst du auf dem Betriebssystem Linux.
Dadurch erhältst du ein Programm das nur unter Linux lauffähig ist!
Dasselbe machst du dann mit dem selben Quelltext, auf den Betriebsystemen MAC oder AMIGA.
Die dann auch nur unter MAC oder Amiga lauffähig sind.
2.
Wenn du z.B. eine Spezielle Funktion aus der Windows-API im Quelltext nutzen willst (Betriebsystem Spezifische Funktion),
funktioniert das Kompilieren nicht mehr unter den anderen Betriebsystemen !!!!
(Windows-API Befehle gibt es eben nur bei Windows)
Dafür gibt es in PureBasic die Befehle (Compilerdirektiven):
CompilerSelect #PB_Compiler_OS und
CompilerCase #PB_OS_xxxxxxxxx
Hier wird während der Kompilierung abgefragt, mit welchem Betriebsystem (auf dem PureBasic gerade läuft) Kompiliert werden soll.
Wenn du z.B. eine Windows-API Funktion nutzt,
aber auf dem Betriebsystem Linux Kompilierst,
so wird folgende Zeile einfach nicht mit kompiliert:
Code: Alles auswählen
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
; MS Windows Spezielle Befehle:
RegisterHotKey_( WindowID(Window), HOTKEY_WIN_W, 8, 87)
UnregisterHotKey_(WindowID(Window), HotkeyID)
CompilerEndSelect
Wenn man alle Betriebsystem abhängigen Prozeduren, in einzelnen Quelltexte, für die einzelnen Betriebsysteme zusammenlegt.
z.B Amiga.pbi , Linux.pbi, Mac.pbi, Windows.pbi.
Code: Alles auswählen
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_AmigaOS
; AmigaCode
IncludeFile "Amiga.pbi" ; Code der nur unter Amiga Kompiliert wird
CompilerCase #PB_OS_Linux
; PinguinCode
IncludeFile "Pinguin.pbi" ; Code der nur unter Linux Kompiliert wird
CompilerCase #PB_OS_MacOS
; ApfelCode
IncludeFile "Mac.pbi" ; Code der nur unter MAC Kompiliert wird
CompilerCase #PB_OS_Windows
; FensterCode
IncludeFile "Windows.pbi" ; Code der nur unter Windows Kompiliert wird
CompilerEndSelect
Zur Laufzeit geht das daher nicht !!