Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

18.12.2003, 10:59

Fehler beim Linken

Wenn ich folgendes Listing kompilieren möchte erhalte ich folgenden Fehler:

Zitat

--------------------Konfiguration: Listing1 - Win32 Debug--------------------
Linker-Vorgang läuft...
Listing1.obj : error LNK2001: Nichtaufgeloestes externes Symbol _Direct3DCreate9@4
Debug/Listing1.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

Listing1.exe - 2 Fehler, 0 Warnung(en)


Hier das Listing aus dem Buch

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <windows.h>
#include <stdio.h>
#include <D3D9.h>

int g_iNumAdapters; // Anzahl der Adapter
D3DADAPTER_IDENTIFIER9 * g_pAdapters; // Adapterliste
PDIRECT3D9 g_pD3D = NULL; // IDirect3d9-Schnittstelle

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, char * pcCmdLine, int iShowCmd) {

    char acAdapterInfo[1024];

    // Schnittstelle für Direct3D erzeugen
    if ((g_pD3D = Direct3DCreate9 (D3D_SDK_VERSION)) == NULL) {
        // Fehler
        MessageBox (NULL, "Fehler beim Erzeugen der Direct3D-Schnittstelle!", "Fehler", MB_OK | MB_ICONEXCLAMATION);
        return 1;
    }

    // Anzahl der Adapter ermitteln
    g_iNumAdapters = g_pD3D->GetAdapterCount ();

    // Speicher reservieren und Informationen über jeden Adapter sammeln
    g_pAdapters = new D3DADAPTER_IDENTIFIER9[g_iNumAdapters];

    for (int i = 0; i < g_iNumAdapters; i++) {
        if (FAILED (g_pD3D->GetAdapterIdentifier(i, 0, &g_pAdapters[i]))) {
            // Fehler
            MessageBox (NULL, "Adapterinformationen konnten nicht abgefragt werden!", "Fehler", MB_OK | MB_ICONEXCLAMATION);
            // Aufräumen
            g_pD3D->Release ();
            delete[] g_pAdapters;
            return 1;
        }

        // Adapterinformationen anzeigen
        sprintf (acAdapterInfo, "Adapter-ID: %d\n Name: %s\n Treiber: %s\n Treiberversion: %d",i, g_pAdapters[i].Description,
                 g_pAdapters[i].Driver, g_pAdapters[i].DriverVersion);

        MessageBox (NULL, acAdapterInfo, "Adapter gefunden", MB_OK | MB_ICONEXCLAMATION);

    }

    // Aufräumen
    g_pD3D->Release ();
    delete[] g_pAdapters;

    return 0;

}


Ich habe das include verzeichnis aus dem DirectX SDK in VC++ hinzugefügt,
wie es beschrieben ist.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

18.12.2003, 13:24

Du musst - wie im Buch beschrieben - noch verschiedene LIB-Dateien linken.

Anonymous

unregistriert

3

18.12.2003, 21:04

Ich wüsste nicht, das ich etwas vergessen habe.
Unter Include steht der Include Ordner aus dem SDK und unter Lib
der Lib Ordner des SDK und ganz oben wie in dem Buch beschrieben.

4

18.12.2003, 21:28

Unter Projekt->Einstellungen->Linker musst du noch die Lib-Dateien hinzufügen.
Da dürfte dann bei Objekt-/Bibliothek-Module etwas in der Art stehen:
tribased.lib d3d9.lib d3dx9d.lib dxerr9.lib dxguid.lib kernel32.lib ...
In a world without fences and walls - who needs windows and gates ?

http://www.Paid4Mailer.de/?refid=8422

Anonymous

unregistriert

5

18.12.2003, 22:40

Zitat

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

steht bei mir, also stimmt da doch etwas nicht ???

6

18.12.2003, 23:35

du musst die anderen libs selbst hinschreiben d3d9.lib etc...

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

7

19.12.2003, 07:01

füge einfach

tribased.lib d3d9.lib d3dx9d.lib dxerr9.lib dxguid.lib kernel32.lib vor der kernel32.lib ein!

Achtung : Alle Lib Eingaben durch ein Leerzeichen trennen![/i]

Anonymous

unregistriert

8

19.12.2003, 12:06

Ok danke jetzt geht es :)

Werbeanzeige