C++ Code lässt sich nicht linken

Hallo,

Ich habe mir mal - um es zu testen - die Havok SDK runtergeladen und hab' die auch ausprobiert (sprich: mir die Demos angesehen^^). Jetzt wollte ich gern mal selbst ein bisschen damit ausprobieren, und habe mir dabei gedacht, anstatt die 980-Seitige englische merkwürdig gegliederte Dokumentation sich anzuschauen (was ich sowieso noch oft genug tun werde), sollte ich vielleicht erstmal versuchen, eines von den Demos selbst zu Builden und auszuführen. Natürlich gibt es das in einer Form für Visual Studio 2005, welches ich aber nicht besitze (außerdem hasse), stattdessen benutze ich eigentlich dieses MinGW-Dingens was ich in irgendeinem c++ Tutorial mal aufgelesen hab'^^.
Jedenfalls habe ich dann den Havok-Ordner als Include-Verzeichnis eingetragen und versucht, einige Beispiele zu kompillieren. Ging auch ganz gut (keine Fehler, gelegentlich Warnmeldungen wegen irgendeinem #pragma, sowas hier:

Compiling...
SimpleMultithreadedConsoleMain.cpp
In file included from C:\Havok\Source\Common\Base\Thread\CriticalSection\hkCriticalSection.h:226,
from C:\Havok\Source\Common\Base\Memory\Memory\Pool\hkPoolMemory.h:13,
from ..\..\..\..\Havok\Demo\StandAloneDemos\ConsoleExampleMt\SimpleMultithreadedConsoleMain.cpp:14:
C:\Havok\Source\Common\Base\Thread\CriticalSection\Win32\hkWin32CriticalSection.inl:17: warning: ignoring
#pragma warning
C:\Havok\Source\Common\Base\Thread\CriticalSection\Win32\hkWin32CriticalSection.inl:18: warning: ignoring
#pragma warning
C:\Havok\Source\Common\Base\Thread\CriticalSection\Win32\hkWin32CriticalSection.inl:34: warning: ignoring
#pragma warning

SimpleMultithreadedConsoleMain.o - 0 error(s), 3 warning(s)


Beim Versuch, diese dann auch noch zu builden (will meinen: linken), kamen dann einige hunderte solcher Dinger:

Linking...
C:\Programme\MinGWStudio\Projects\havok\Debug\SimpleMultithreadedConsoleMain.o(.text+0x20): In function `ZN9hkMatrix39getColumnEi':
C:\Havok\Source\Common\Base\Object\hkBaseObject.h: undefined reference to `hkBaseObjectTypeInfo'
C:\Programme\MinGWStudio\Projects\havok\Debug\SimpleMultithreadedConsoleMain.o(.text+0x24):C:\Havok\Source\Common\Base\Object\hkBaseObject.h: undefined reference to `hkReferencedObjectTypeInfo'
C:\Programme\MinGWStudio\Projects\havok\Debug\SimpleMultithreadedConsoleMain.o(.text+0x28):C:\Havok\Source\Common\Base\Object\hkBaseObject.h: undefined reference to `hkpBoxShapeTypeInfo'
C:\Programme\MinGWStudio\Projects\havok\Debug\SimpleMultithreadedConsoleMain.o(.text+0x2c):C:\Havok\Source\Common\Base\Object\hkBaseObject.h: undefined reference to `hkpBvShapeTypeInfo'
C:\Programme\MinGWStudio\Projects\havok\Debug\SimpleMultithreadedConsoleMain.o(.text+0x30):C:\Havok\Source\Common\Base\Object\hkBaseObject.h: undefined reference to `hkpCapsuleShapeTypeInfo'
...
Too many errors have been found.

havok.exe - 671 error(s), 0 warning(s)



Kann mir jemand sagen, was die Ursachen dafür sind, oder überhaupt erstmal, was hier das Problem ist? Und wie ich das Problem löse?
Für Hilfe bin ich unendlich dankbar!

Xantoo
 
Hab leider ewig nicht mehr mit gcc gearbeitet, aber wenn ich mich recht erinnere gabs ne compileroption (-o ????), welche nur compiled und nicht linkt. damit musst du dir die ganzen .o erzeugen und danach kannst du erst linken. Bei größeren Apps siehst du dabei aber ohne makefile keine sonne und wenn du kein makefile hast, macht es viel arbeit eins zu schreiben.

Aber es gibt vstud auch 4 free. http://www.microsoft.com/germany/Express/
Vielleicht hilft dir das weiter.
 
Der gcc-Switch um nur zu compilen ist übrigens -c.

Aber egal, zu deinem Problem:
Es sieht ganz so aus, als ob du zwar die richtigen Header eingebunden hast, aber halt nicht die richtigen
Libs ( bei gcc der -l Switch ) angegeben hast, ohne die sind die Funktionen zwar in den Header-Files definiert, aber der Code
fehlt halt..
Also müsstest du noch die passende(n) Lib(s) angeben, die ich dir aber leider bei bestem Willen nicht sagen kann, da
ich noch nie mit Havok SDK gearbeitet habe...
Sollte aber nicht allzu schwer sein diese herauszufinden.
 
Zurück
Oben