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

20.02.2011, 19:33

3D-Spiele-Programmierung mit Visual C++ 2010

Hi Leute :)
ich hab mir das in der Überschrift genannte Buch gekauft und wollte eins der ersten Beispielprogramme schreiben. Jedoch ist die Anleitung im Buch nur für Visual C++ 2003 und 2005 gedacht und hier fand ich im Forum nur eine Anleitung für 2008. Hat jemand ne Schritt für Schritt Anweisung was ich alles muss in die Verzeichnisse einfügen und/oder linken damit der compiler mir keine Fehlermeldung liefert?

Hier steht der Quellcode den ich benutze.

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
#include <Windows.h>
#include <G:\ney\Try to be a Hero\Hero1.1\TriBase\Include\TriBase.h>
#include "G:\ney\Try to be a Hero\Hero1.1\Beispiele\Allgemeines\InitWindow.h"
#include "G:\ney\Try to be a Hero\Hero1.1\Beispiele\Allgemeines\Direct3DEnum.h"
#include "G:\ney\Try to be a Hero\Hero1.1\Beispiele\Allgemeines\InitDirect3D.h"
#include "G:\ney\Try to be a Hero\Hero1.1\TriBase\Res\Resource.h"



//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)
{
    //Tribase-Engine initialisieren
    tbInit();

    // Direct3D-Optionen abfragen (vom Benutzer gewählt)
    SDirect3DParameters Direct3DParameters;
    tbResult Result = GetDirect3DParameters(&Direct3DParameters);
    if(Result == TB_ERROR)
    {
        // Es traf 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",
                  NULL))
    {
        // 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;
    }

    //Narichtenschleife
    tbDoMessageLoop(Render, Move);

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

    //Engine herunterfahren
    tbExit();

    return 0;
}


Und hier noch die Fehlermeldung :)

Zitat

1>------ Erstellen gestartet: Projekt: TryEngine, Konfiguration: Debug Win32 ------
1>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitDirect3D(void)" (?ExitDirect3D@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbDoMessageLoop(enum tbResult (__cdecl*)(float),enum tbResult (__cdecl*)(float))" (__imp_?tbDoMessageLoop@@YA?AW4tbResult@@P6A?AW41@M@Z0@Z)" in Funktion "_WinMain@16".
1>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitWindow(void)" (?ExitWindow@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>fghj.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>fghj.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""struct HWND__ * g_hWindow" (?g_hWindow@@3PAUHWND__@@A)".
1>fghj.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>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbExit(void)" (__imp_?tbExit@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>fghj.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>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbInit(void)" (__imp_?tbInit@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>C:\Users\A man called hero\Documents\Visual Studio 2010\Projects\TryEngine\Debug\TryEngine.exe : fatal error LNK1120: 9 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Ich würde mich sehr über etwas Hilfe freuen. Vielen Dank schon mal im Voraus
mfg master_kenshin :)

2

20.02.2011, 19:53

/

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »E333« (02.09.2021, 04:12)


3

20.02.2011, 20:15

Vielen Dank für die schnelle Antwort :)
Leider arbeite ich noch nicht lange mit Visual C++ und bin mir nicht sicher ob ich es jetzt richtig verstanden habe. Ich hoffe, dass es deine Nerven nicht zu sehr beansprucht ;P

hab jetzt oben links in der Projektmappe die dateien hinzugefügt und da ich noch immer eine fehlermeldung bekomme nehme ich stark an, dass ich es nicht richtig gemacht habe^^

Headerdateien
  • Direct3DEnum.cpp
  • Direct3DEnum.h
  • etc...

4

20.02.2011, 21:11

Und welchen Fehler bekommst du noch?
fka tm

5

20.02.2011, 21:19

Das ist die Fehlermeldung

Zitat

>------ Erstellen gestartet: Projekt: TryEngine, Konfiguration: Debug Win32 ------
1>G:\ney\Try to be a Hero\Hero1.1\Beispiele\Allgemeines\Allgemeines.rc(10): fatal error RC1015: cannot open include file 'mfc/afxres.h'.
1>
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

6

20.02.2011, 21:20

Ersetze "mfc/afxres.h" durch "windows.h" ;)
(in Allgemeines.rc)
fka tm

7

20.02.2011, 21:54

Hehe auch da spielt mein pc nicht mit und liefert mir diese Fehlermeldung ;P

Zitat

1>------ Erstellen gestartet: Projekt: TryEngine, Konfiguration: Debug Win32 ------
1>G:\ney\Try to be a Hero\Hero1.1\TriBase\Res\Resource.rc(61): error RC2104: undefined keyword or key name: IDC_STATIC
1>
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


8

20.02.2011, 22:03

Wir sind aber schon nah dran! ;)

Definiere IDC_STATIC in resource.h (oder allgemeines.h)

#define IDC_STATIC -1
fka tm

9

20.02.2011, 22:16

hmm ich glaub da wurde Visual C++ echt wütend ;P hab es einmal in resource.h probiert und einmal in allgemeines.h und bekam jedes mal diese leicht gereizte Fehlermeldung^^

Zitat


1>------ Erstellen gestartet: Projekt: TryEngine, Konfiguration: Debug Win32 ------
1> Überspringen... (keine relevanten Änderungen gefunden)
1> fghj.cpp
1> InitWindow.cpp
1> InitDirect3D.cpp
1> Direct3DEnum.cpp
1>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbDoMessageLoop(enum tbResult (__cdecl*)(float),enum tbResult (__cdecl*)(float))" (__imp_?tbDoMessageLoop@@YA?AW4tbResult@@P6A?AW41@M@Z0@Z)" in Funktion "_WinMain@16".
1>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbExit(void)" (__imp_?tbExit@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>fghj.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbInit(void)" (__imp_?tbInit@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>Direct3DEnum.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbWriteToLog(char *,...)" (__imp_?tbWriteToLog@@YA?AW4tbResult@@PADZZ)" in Funktion ""enum tbResult __cdecl GetFormatString(enum _D3DFORMAT,char *)" (?GetFormatString@@YA?AW4tbResult@@W4_D3DFORMAT@@PAD@Z)".
1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbWriteToLog(char *,...)" (__imp_?tbWriteToLog@@YA?AW4tbResult@@PADZZ)".
1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbWriteToLog(char *,...)" (__imp_?tbWriteToLog@@YA?AW4tbResult@@PADZZ)".
1>Direct3DEnum.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) char * __cdecl tbRemoveDir(char *)" (__imp_?tbRemoveDir@@YAPADPAD@Z)" in Funktion ""enum tbResult __cdecl GetFormatString(enum _D3DFORMAT,char *)" (?GetFormatString@@YA?AW4tbResult@@W4_D3DFORMAT@@PAD@Z)".
1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) char * __cdecl tbRemoveDir(char *)" (__imp_?tbRemoveDir@@YAPADPAD@Z)".
1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) char * __cdecl tbRemoveDir(char *)" (__imp_?tbRemoveDir@@YAPADPAD@Z)".
1>Direct3DEnum.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbMemFree(void *)" (__imp_?tbMemFree@@YA?AW4tbResult@@PAX@Z)" in Funktion ""enum tbResult __cdecl DeleteListData(struct HWND__ *,int)" (?DeleteListData@@YA?AW4tbResult@@PAUHWND__@@H@Z)".
1>Direct3DEnum.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) void * __cdecl tbMemAlloc(int)" (__imp_?tbMemAlloc@@YAPAXH@Z)" in Funktion ""enum tbResult __cdecl EnumDeviceTypes(struct HWND__ *)" (?EnumDeviceTypes@@YA?AW4tbResult@@PAUHWND__@@@Z)".
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 "_DXGetErrorString9A@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 "_DXGetErrorDescription9A@4" in Funktion ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)".
1>C:\Users\A man called hero\Documents\Visual Studio 2010\Projects\TryEngine\Debug\TryEngine.exe : fatal error LNK1120: 10 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

10

21.02.2011, 07:46

Scheint so, dass du vergessen hast, die notwendigen Libs (tribaseD.lib, d3d*.lib) einzubinden.
Projekteinstellungen - Linker - Eingabe -> Zusätzliche Abhängigkeiten
fka tm

Werbeanzeige