Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#56

AW: C++ Builder oder Visual C++

  Alt 5. Nov 2015, 21:02
... Bei kleinen Libs ist das ganz oft aber nicht der Fall. Man darf nicht vergessen, dass eine Lib nicht nur aus den Binärdateien besteht (die theoretisch immer kompatibel sein sollten), sondern auch aus Header Files (und genau hier gibt es dann die Kompatibilitätsprobleme).
Warum sind z.B. Headerfiles nicht kompatibel? Weil es dort Deklarationen gibt, die in systemspezifischen Bilbliotheken definiert sind?
Header-Files können unter anderem auch (anders als beim Delphi Interface-Teil) richtigen Code in Form von Funktionen, oder inline deklarierten Klassenmethoden enthalten. Diese Komponenten sind nicht im Binärteil von bereits kompilierten Libs enthalten und werden dann on-demand erstellt. Je nach Compiler variieren auch Sprachfeatures, weshalb ein Header dann unter einem Compiler wunderbar verwendet werden kann, für einen Anderen aber erst angepasst werden muss.

Teilweise muss man einige Verrenkungen anstellen, damit eine Lib zu allen großen Compilern kompatibel ist. Kleines Beispiel:
Code:
#if defined(MYLIB_MSVC) || defined(MYLIB_BORLAND)
#   define MYLIB_INLINE __inline
#else
#   define MYLIB_INLINE inline
#endif
oder auch:
Code:
#if defined (_M_AMD64) || defined (__x86_64__)
#   define MYLIB_X64
#elif defined (_M_IX86) || defined (__i386__)
#   define MYLIB_X86
#else
#   error "Unsupported architecture detected"
#endif
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat