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

1

23.11.2013, 11:37

Verweis auf nicht aufgelöstes externes Symbol(InitDirect3d)

Hey Leute

Bin momentan am Buch dran, hat auch bis jetzt alles super geklappt.

Jetzt bekam ich aber eben einen error über 2 extern nicht aufgelöste verweise.

Der Quellcode ist 1 zu 1 bearbeitet, alle Dateien sind included, resource befindet sich im gleichen Ordner, dll ist auch vorhanden für die debug version.

Hier zuerst mal der Quellcode

C-/C++-Quelltext

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
// Kapitel 2
// Beispielprogramm 02
// ===================
// Auflisten aller Direct3D-Optionen und anschließende Erstellung
// einer Geräteschnittstelle (IDirect3DDevice9).
// Zu den Optionen gehören unter anderem:
// - Adapter und Gerätetyp
// - Videomodi
// - Multi-Sampling-Typen und -Qualitätsstufen
// - Hardware- oder Softwareverarbeitung?

#include <Windows.h>
#include <TriBase.h>
#include "..\\..\\Beispielprogramme\\Allgemeines\\InitWindow.h"
#include "..\\..\\Beispielprogramme\\Allgemeines\\Direct3DEnum.h"
#include "..\\..\\Beispielprogramme\\Allgemeines\\InitDirect3D.h"
#include "Resource.h"

#include <d3d9.h>
#include <d3dx9.h>
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

// ******************************************************************
// Render-Funktion
tbResult Render(float fNumSecsPassed)
{
    return TB_OK;
}

// ******************************************************************
// Move-Funktion
tbResult Move(float fNumSecsPassed)
{
    return TB_OK;
}

// ******************************************************************
// Windows-Hauptfunktion
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    SDirect3DParameters Direct3DParameters;
    tbResult            Result;


    // TriBase-Engine initialisieren
    tbInit();

    // Direct3D-Optionen abfragen (vom Benutzer gewählt)
    Result = GetDirect3DParameters(&Direct3DParameters);
    if(Result == TB_ERROR)
    {
        // Es trat ein Fehler auf!
        MessageBox(NULL, "Fehler beim Abzählen!", "Fehler",
                   MB_OK | MB_ICONEXCLAMATION);
        tbExit();
        return 1;
    }
    else if(Result == TB_CANCELED)
    {
        // Der Dialog wurde abgebrochen!
        tbExit();
        return 0;
    }

    // Fenster initialisieren. Die Größe hängt vom gewählten
    // Videomodus ab, der in der Parameterstruktur gespeichert ist.
    if(InitWindow(Direct3DParameters.VideoMode.Width,
                  Direct3DParameters.VideoMode.Height,
                  "Beispielprogramm Nr. 2: Direct3D-Abzählung",
                  LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1))))
    {
        // Fehler beim Erstellen des Fensters!
        MessageBox(NULL, "Fehler beim Erstellen des Fensters!",
                   "Fehler", MB_OK | MB_ICONEXCLAMATION);
        tbExit();
        return 1;
    }

    // Direct3D mit den abgefragten Einstellungen initialisieren
    if(InitDirect3D(&Direct3DParameters,
                    g_hWindow))
    {
        // Fehler!
        MessageBox(g_hWindow, "Fehler beim Initialisieren von Direct3D!",
                   "Fehler", MB_OK | MB_ICONEXCLAMATION);
        ExitWindow();
        tbExit();
        return 1;
    }

    // Nachrichtenschleife
    tbDoMessageLoop(Render, Move);

    // Direct3D und Fenster herunterfahren
    ExitDirect3D();
    ExitWindow();

    // Engine herunterfahren
    tbExit();

    return 0;
}



Der Error ist wie folgt:

Quellcode

1
2
3
1>InitDirect3D.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorStringA@4" in Funktion ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)".
1>InitDirect3D.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorDescriptionA@4" in Funktion ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)".
1>C:\Dokumente und Einstellungen\Leridon\Desktop\Tribase\3D-Spieleprogrammierung-Update\Eigene Projekte\Window\Window (Debug).exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.


Nach erneutem durchschauen nun mehr fehler XD

Quellcode

1
2
3
4
5
1>Direct3DEnum.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Direct3DCreate9@4" in Funktion ""enum tbResult __cdecl GetDirect3DParameters(struct SDirect3DParameters *)" (?GetDirect3DParameters@@YA?AW4tbResult@@PAUSDirect3DParameters@@@Z)".
1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_Direct3DCreate9@4".
1>InitDirect3D.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorStringA@4" in Funktion ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)".
1>InitDirect3D.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorDescriptionA@4" in Funktion ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)".
1>C:\Dokumente und Einstellungen\Leridon\Desktop\Tribase\3D-Spieleprogrammierung-Update\Eigene Projekte\Window\Window (Debug).exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.


Ich hoffe ihr könnt mir da helfen
Gruß Leri

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »leridan« (23.11.2013, 12:08)


FSA

Community-Fossil

  • Private Nachricht senden

2

23.11.2013, 15:40

Du hast die *.lib Dateien nicht gelinkt.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

3

24.11.2013, 12:27

ich gucks mir nochmal an, aber die müssten gelinkt sein, habs wie in der anleitung ausgeführt, und alle anderen projektmappen klappen ja :/

4

24.11.2013, 12:46

bin jetzt schon ne ganze weile am ausprobieren, aber es ist anscheinend alle included :/

Tribase komplett und auch der Dependencies Ordner welcher include und libs von dx enthält

5

24.11.2013, 13:27

hat keiner ne Idee?^^ Ich verzweifel hier langsam, ich hab das Projekt wie beschrieben in der pdf erstellt, eine win32 anwendung, tribase included, und gelinkt, sowohl debug als auch release

Fehler imoment 3 stück, obwohl die eigenschaften in meinem Projekt, genauso wie im fertigen projekt sind :/

Quellcode

1
2
3
4
5
1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_Direct3DCreate9@4".
1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorStringA@4".
1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorDescriptionA@4".
1>C:\Dokumente und Einstellungen\Leridon\Desktop\Tribase\3D-Spieleprogrammierung-Update\Eigene Projekte\BuchDX\BuchDX.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 1 aktuell, 0 übersprungen ==========

FSA

Community-Fossil

  • Private Nachricht senden

6

24.11.2013, 13:56

Ich habe exakt deine Fehlermeldung in Google eingegeben und das kam dabei raus:
Verweis auf nicht aufgelöstes, externes Symbol in der InitDirect3D Funktion.

Zitat von »dot am 09.09.2011«


Nope. Du hast vergessen die richtigen libs zu linken (d3d9.lib und dxerr.lib).


Bitte befrag auch Google bei Problemen.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

7

24.11.2013, 14:08

^^ muss mich entschuldigen, habe vergessen dxerr zu linken

Klappt jetzt alles, danke :)

Werbeanzeige