ich entschied mich für die newton physic engine / version 1.52 / gibt es für mac linux u. pc
(freie bibliothek) newton physic engine ist aufgebaut auf OpenGL und enthält eine kollision detection (ideal für mein projekt). -> www.newtondynamics.com
-probleme beim einbinden am mac mit Xcode 2.1:
- newton 1.52 graucht gcc 4.x (bei mac ab XCode 2.x)
-fehlermeldung: error:’size_t’ has not been declared Newton.h:93
error:’size_t’ has not been declared Newton.h:92
typedef void (*NewtonSerialize) (void* serializeHandle, const void* buffer, size_t size);
typedef void (*NewtonDeserialize) (void* serializeHandle, void* buffer, size_t size);
size_t ist eine standart deklarierte variable die für speicherplatzreservierung verwendet wird. sie ist im stddef.h deklariert. Da ich ohne prefixheader arbeite in der diese includiert ist, muss sie in newton.h mit #include eingebunden werden.
-fehlermeldung: ZeroLink: unknown symbol ‘_hightMap_debugCount’
thermobject_C++_v2-1c has exited due to signal 6 (SIGABRT).
hightMap_debugCount ist im common/HeightFieldCollision.cpp declariert : extern dInt32 hightMap_debugCount; das problem hier ist, dass XCode das sogenannte ZeroLink verwendet. ZeroLink (näheres in XCode-Help) dient zum schnellen entwickeln von Programmen. Es legt bei Mehrdateien-Programme objekt-files an *.o, die miteinander wärend der Laufzeit verlinkt werden. Dadurch wird in einen Projekt immer nur die Code-Datei compiliert, die geändert wurde.Es mussen nicht immer die gesamten Datein des ganzen Projektes compilieren werden. ZeroLink unterstützt aber nicht die verwendung von privaten externen symbolen. privat externe symbole sind nur sichtbar in modulen, die das selbe Mach-O file besitzen. darum muss man in
Projekt->Edit Projekt Setting -> Build -> Other Linker Flags -> -no-run-initializers-before-main
eingeben. Dann wird nach statischen initilaisierunge in allen objekt-file’s gesucht, und verlinkt bevor die main-funktion aufgerufen wird.