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

01.07.2006, 17:48

Beispiel: komplette Direct3D-Anwendung funktioniert nicht!

Hallo Leute,

ich befinde mich auf der Seite 131 (2. Auflage) und versuche seit einer Stund e das Beispiel zum laufen zum bringen. Jedoch funktioniert es einfach nicht, und ich komme nicht weiter!

Code:

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
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_NONSTDC_NO_DEPRECATE

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

tbResult Render(float fNumSecsPassed)
{
    return TB_OK;
}

tbResult Move(float fNumSecsPassed)
{
    return TB_OK;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd)
{
    tbInit(); // Engine init


    // Direct3D Optionen abfragen //

    SDirect3DParameters Direct3DParameters;
    tbResult Result = GetDirect3DParameters(&Direct3DParameters);

    if(Result == TB_ERROR)
    {
        MessageBox(NULL, "Fehler beim Abzählen", "Fehler", MB_OK | MB_ICONEXCLAMATION);
        tbExit();
        return 1;
    }

    else if(Result == TB_CANCELED)
    {
        tbExit();
        return 0;
    }

    // Fenster initialisieren //

    if(InitWindow(  Direct3DParameters.VideoMode.Width,
                    Direct3DParameters.VideoMode.Height,
                    "Beispielprogramm",
                    LoadIcon(hInstance, MAKEINTRESOURCE(101))))
    {
        MessageBox(NULL, "Fehler beim erstellen des Fensters!", "Fehler", MB_OK | MB_ICONEXCLAMATION);
        tbExit();
        return 1;
    }

    if(InitDirect3D(&Direct3DParameters, g_hWindow))
    {
        MessageBox(g_hWindow, "Fehler beim Initialisieren von Direct3D",
            "Fehler", MB_OK | MB_ICONEXCLAMATION);
        ExitWindow();
        tbExit();
        return 1;
    }

    tbDoMessageLoop(Render, Move);

    ExitDirect3D();
    ExitWindow();

    tbExit();

    return 0;
}


Fehlermeldungen:

Zitat

1>------ Erstellen gestartet: Projekt: proj1, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>main.cpp
1>Verknüpfen...
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitDirect3D(void)" (?ExitDirect3D@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitWindow(void)" (?ExitWindow@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)" in Funktion "_WinMain@16".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""struct HWND__ * g_hWindow" (?g_hWindow@@3PAUHWND__@@A)" in Funktion "_WinMain@16".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl InitWindow(int,int,char *,struct HICON__ *)" (?InitWindow@@YA?AW4tbResult@@HHPADPAUHICON__@@@Z)" in Funktion "_WinMain@16".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl GetDirect3DParameters(struct SDirect3DParameters *)" (?GetDirect3DParameters@@YA?AW4tbResult@@PAUSDirect3DParameters@@@Z)" in Funktion "_WinMain@16".
1>C:\Dokumente und Einstellungen\Dima\Eigene Dateien\Visual Studio 2005\Projects\proj1\Debug\proj1.exe : fatal error LNK1120: 6 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Dima\Eigene Dateien\Visual Studio 2005\Projects\proj1\proj1\Debug\BuildLog.htm" gespeichert.
1>proj1 - 7 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Libraries:
tribased.lib d3d9.lib dxerr9.lib kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib

Vielleicht kann mir jemand wieder weiterhelfen. Was bedeutet überhaupt "nicht aufgelöstes Symbol"? Danke!

Liebe Grüße,
Dima ;)

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

2

01.07.2006, 18:22

Windows-Anwendung erstellt?
Direct3D-Dateien vorhanden(SDK)?
Debug-Versionen der libraries verwendet?

3

01.07.2006, 18:25

Windows-Anwendung erstellt? >> Nein, ein "leeres Projekt"
Direct3D-Dateien vorhanden(SDK)? >> Ja
Debug-Versionen der libraries verwendet? >> Ja

Bei Visual C++ 2005 Express finde ich keinen Knopf (keiner da) für Win32 Anwendung, außer Win32 Konsole, was wohl ganz falsch wäre zu wählen.

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

4

01.07.2006, 18:36

das hatte ich zu anfang auch gehabt.
dann habe ich diesen krempel einfach sein lassen^^

5

01.07.2006, 18:46

Du hast aufgehört das Buch zu lesen?
Ich habe zwar viel im Buch nicht verstanden, aber ich lese es trotzdem weiter. Ich denke wenn man es ausprobiert, dann versteht man es besser, was man da gelesen hat. Außerdem bin ich bereit das Buch mehrmals zu lesen, man versteht nunmal nicht alles sofort!

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

6

01.07.2006, 18:56

Wo hast du denn die Dateien

Quellcode

1
2
3
"..\\..\\Allgemeines\\InitWindow.h"
"..\\..\\Allgemeines\\Direct3DEnum.h"
"..\\..\\Allgemeines\\InitDirect3D.h" 

??
Wenn das mit den relativen Pfaden nicht klappt, kopier doch die Dateien einfach ins Projektverzeichnis

Edit: Ach ja, dann musst du natuerlich den Code abaendern (also #include "InitWindow.h" usw) und wichtig: die Datei aus dem Projekt entfernen und neu hinzufuegen
"Have you tried turning it off and on again?"

7

01.07.2006, 19:03

Relative Pfade klappen! Jedoch habe ich die 3 Datein nicht zum Projekt hinzugefügt, sollte ich sicherlich machen, oder?
Wow! Danke es hat geklappt! Ich musste sie zum Projekt hinzufügen!

8

01.07.2006, 19:08

Zitat von »"Dima"«


Bei Visual C++ 2005 Express finde ich keinen Knopf (keiner da) für Win32 Anwendung, außer Win32 Konsole, was wohl ganz falsch wäre zu wählen.


Hast du nicht das Plattorm SDK installiert?
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

9

01.07.2006, 19:17

Win32 Konsole ist schon richtig. Beim Erstellen kommt bei mir ein Auswahlfenster mit der Option "Console Application" und "Windows Application" wobei man natuerlich letzteres auswaehlen muss.
"Have you tried turning it off and on again?"

10

01.07.2006, 19:36

@Chase: Cool Danke! Das hilft mir weiter :)
@Anfänger: Ja, ich habe diese installiert, ich habe sogar die grade neu installiert weil ich dachte es kommt dann der Knopf "dazu", kam er aber nicht!

Liebe Grüße,
Dima ;)

@Chase: Ja, das Auswahl Menu kommt, jedoch ist "Windows Anwendung" deaktiviert. Weiß jemand warum?

Werbeanzeige