Cross Platform dependencies
-
Hallo,
ich möchte gerne eine cross platform dll (bzw. a) schreiben und benutze darin ein paar gekapselte Funktionen der user32 und gdi32.
Ich habe im VC2010 projekt die dependencies bis auf kernel32 und user32 rausgeworfen und möchte nun wissen ob ich die gdi32 gefahrlos benutzen kann oder bo es da auf manchen windows systemen (x86, x64) probleme mit geben kann, weil in den geerbten Abhängigkeiten ja noch sehr viel mehr referenziert wurde?
-
Was sind gekapselte Funktionen? Und was meinst du mit geerbten Abhängigkeiten in diesem Zusammenhang? Wieso schreibst du "cross platform" wenn es dann doch nur auf Windows laufen soll? Usw.
GDI32 gibt es auf allen Windows Systemen seit es Win32 gibt. Um mehr zu sagen müsste ich verstehen was du eigentlich meinst. Was ich nicht tue, weil das alles viel zu wirr ist.
-
hustbaer schrieb:
Was sind gekapselte Funktionen?
Wenn man vom Fach ist sollte man das wissen!
hustbaer schrieb:
Und was meinst du mit geerbten Abhängigkeiten in diesem Zusammenhang?
Wie ich geschrieben habe "in meinem VC2010 Projekt" http://msdn.microsoft.com/de-de/library/675f1588.aspx
hustbaer schrieb:
Wieso schreibst du "cross platform" wenn es dann doch nur auf Windows laufen soll?
ich habe ebenso geschrieben (bzw. a), etwa für Linux. Wenn man schon einmal cross platform gearbeitet hat, weiß man, dass man natürlich die spezifischen API funktionen kapseln muss weil es diese unter anderen Platformen nicht gibt!
hustbaer schrieb:
GDI32 gibt es auf allen Windows Systemen seit es Win32 gibt
aha, also kann ich die Einbinden ohne auf eventuelle Probleme unter Windows zu stoßen?
-
Unter Windows solltest du festlegen, was deine älteste unterstützte Plattform ist. Das kann bei VC2010 sogar noch Windows 2000 sein. Dann musst du die entsprechenden Konstanten definieren (z.B.: _WIN32_WINNT), bevor du "windows.h" und andere einbindest.
Jede neuere Windows Version beinhaltet neue Funktionen in Kernel32, User32 und Gdi32. Wenn du also eine API verwendest, die erst ab Vista verfügbar ist, wird dein Prozess unter WinXP oder Win2K nicht starten.
Nutzt du hingegen nur Funktionen, die es schon zu Win2K-Zeiten gab, solltest du durchgehend bis Windows 8.1 kompatibel bleiben, weil MS Gott sei Dank darauf achtet (Ok, einige wenige Ausnahmen bestätigen die Regel).
Du kannst auch den noch weiter reduzierten API-Satz von Windows CE nutzen und auf alles andere verzichten, dann bist du zu CE und Win32 kompatibel ... aber wer braucht das heute noch ...
Gdi32 hat aber meines Wissens seit Win2K keine Erweiterungen mehr erhalten, Kernel32 hingegen schon.
PS: Wenn dein Projekt ohne Gdi32 kompiliert und linkt brauchst du es auch nicht.