Hallo,
ich habe die 3.Auflage des Buches und wollte heute alles Notwendige für die Programmierung einrichten. Ich benutze Windows Vista 64-Bit und Visual Studio 2008. Dazu habe ich mir das aktuelle (Juni) DirectX-SDK installiert, und den Tribase-Ordner auf Platte kopiert. Das Plattform-SDK habe ich nicht installiert, denn es ist ja soweit ich das verstanden habe durch das Windows-SDK abgelöst worden. Nach dem Öffnen der "TriBase 2005.sln" musste ich das Projekt dann nach 2008 konvertieren lassen. Zu den VC++ -Verzeichnissen (include/Bibl.) habe ich
G:\Programmierung\directxCD\TriBase\Include
C:\Program Files\Microsoft SDKs\Microsoft DirectX SDK (June 2008\Include
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
G:\Programmierung\directxCD\TriBase\Lib
C:\Program Files\Microsoft SDKs\Microsoft DirectX SDK (June 2008\Lib\x64
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64
hinzugefügt.
Nun wollte ich zum Testen einfach mal das Projekt "Tribase" kompilieren (Release-Konfiguration). Kompilieren klappt auch, nur beim Linken gibts eine Reihe von Fehlermeldungen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1>Verknüpfen...
1> Bibliothek ".\Release/TriBase.lib" und Objekt ".\Release/TriBase.exp" werden erstellt.
1>tbConfig.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DirectSoundEnumerateA@8".
1>tbDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorDescription9A@4".
1>tbDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorString9A@4".
1>tbDirectInput.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_c_dfDIJoystick".
1>tbDirectInput.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_GUID_SysMouse".
1>tbDirectInput.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_c_dfDIKeyboard".
1>tbDirectInput.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_GUID_SysKeyboard".
1>tbDirectInput.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DirectInput8Create@20".
1>tbDirectInput.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_c_dfDIMouse2".
1>tbDirectInput.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_IID_IDirectInput8A".
1>tbDirectSound.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_IID_IDirectSound3DListener".
1>tbDirectSound.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DirectSoundCreate8@12".
1>tbDraw2D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_D3DXCreateTextureFromFileInMemoryEx@60".
1>tbEffect.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_D3DXCreateEffect@36".
1>tbSound.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_IID_IDirectSoundBuffer8".
1>tbSound.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_IID_IDirectSound3DBuffer".
1>tbTextureManager.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_D3DXCreateVolumeTextureFromFileInMemoryEx@64".
1>tbTextureManager.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_D3DXCreateCubeTextureFromFileInMemoryEx@56".
1>TriBase.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_D3DXCreateEffectPool@4".
1>.\Release/TriBase.dll : fatal error LNK1120: 19 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://g:\Programmierung\directxCD\TriBase\Release\BuildLog.htm" gespeichert.
1>TriBase - 20 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 1 aktuell, 0 übersprungen ==========
|
Ich habe hier schon einige Threads zum Thema "Nicht aufgelöstes externes Symbol" gelesen, jedoch konnte ich nirgends Abhilfe finden.
In den Projekteigenschaften von Tribase habe ich folgendes unter Linker->zusätzlich Abhängigkeiten stehen (union aller hier im Forum aufgetauchten lib-Dateien):
|
Quellcode
|
1
|
d3d9.lib d3dx9.lib dinput8.lib dsound.lib strmiids.lib strmbase.lib dxerr9.lib dxguid.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib TriBase.lib DXErr.lib odbc32.lib odbccp32.lib
|
Probiert habe ich es auch mal ohne odbc32.lib odbccp32.lib
und auch mal nur mit folgender Zeile:
|
Quellcode
|
1
|
dxerr.lib d3dx9d.lib d3d9.lib dxguid.lib dinput8.lib
|
Ich denke nicht, dass die Linker-Fehler etwas mit der Visual-Studio-Version oder dem Konvertieren nach 2008er Projekt zu tun haben. Vielleicht habe ich beim Stöbern im Faq-Forum und anderen Threads etwas übersehen, aber bevor ich jetzt noch Stunden mit dem Durchprobieren verschiedener Platform- oder DirectX-SDKs zubringe, frage ich hier ob jemand sieht was ich falsch mache. Habe wie gesagt noch nix selbst geschrieben sondern wollte erstmal testen ob die Tribase-Engine überhaupt zu kompilieren geht.