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

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

41

16.08.2008, 19:41

Die Tribase hast du richtig gelinkt?

42

16.08.2008, 19:56

Naja ich hab sie bei Projekt->D3DAbzählung-Eigenschaften->Linker->Eingabe->Zusätzliche Abhängigkeiten rein, sowohl als Debug und Release.

43

31.08.2008, 04:26

ich will ja nich nerven aber hat keiner mehr ne Idee woran das liegen kann?

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

44

31.08.2008, 11:18

Die Init Window ist sicher iwo in deinem Projekt definiert?(Rechtsklick auf Funktionsaufruf->gehe zu Definition)

45

31.08.2008, 13:06

sorry ich versteh grad nich genau was du meinst...kannst das nochma erklären?

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

46

31.08.2008, 13:20

Zitat von »"White"«

1>D3DAbzählung.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".


Diese Fehlermeldung sagt dir, dass die Funktion InitWindows zwar deklariert, aber nicht definiert ist.
Soll heißen iwo in deinem Code steht ein:

C-/C++-Quelltext

1
tbResult InitWindow(int, int, char*, struct HICON__*);


Aber es fehlt die Funktionsdefinition. Also ein Code alla:

C-/C++-Quelltext

1
2
3
4
5
6
tbResult InitWindow(int, int, char*, struct HICON__*)
{
//bla bla

//Ich bin die Funktion InitWindow

return TB_OK;
}


Schau mal nach ob diese Definition in deinem Code iwo vorhanden ist. Du findest das heraus, indem du rechts auf den Text InitWindow(da wo er im Projekt verwendet wird) klickst und dann wählst: gehe zu Definition.
Wenn er dir sagt: InitWindow ist nicht definiert. Dann hast du vergessen die InitWindow Datei einzubinden oder es zu definieren.

47

31.08.2008, 13:25

C-/C++-Quelltext

1
tbResult        InitWindow(int iWidth, int iHeight, char* pcName, HICON hIcon);


Da wird sie definiert laut C++...

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

48

31.08.2008, 14:02

ja aber wo ist die eigentliche Funktion?

C-/C++-Quelltext

1
2
3
4
tbResult        InitWindow(int iWidth, int iHeight, char* pcName, HICON hIcon)
{
return TB_OK;
}


Denn genau die behauptet deine Fehlermeldung fehlt.

49

31.08.2008, 14:07

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
tbResult InitWindow(int iWidth,
                    int iHeight,
                    const char* pcName,
                    HICON hIcon)
{
    /*LPCSTR pcNam = (LPCSTR) pcName;
    pcName = pcNam;*/
    // Fensterklassenstruktur ausfüllen

    WNDCLASSEX WindowClass = {sizeof(WNDCLASSEX), CS_CLASSDC, WindowProc, 0, 0,
                              GetModuleHandle(NULL), hIcon, LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)), NULL,
                              NULL, "Direct3D window", NULL};
    //(LPCSTR) pcName;


    // Klasse registrieren

    if(!RegisterClassEx(&WindowClass))
    {
        TB_ERROR("Fensterklassenregistrierung fehlgeschlagen!", TB_ERROR);
    }

    TB_INFO("Fensterklasse wurde registriert!");

    RECT Rect;
    SetRect(&Rect, 0, 0, iWidth, iHeight);
    AdjustWindowRect(&Rect, WS_VISIBLE | WS_OVERLAPPEDWINDOW, FALSE);
    iWidth = Rect.right - Rect.left;
    iHeight = Rect.bottom - Rect.top;

    // Fenster erstellen und prüfen

    g_hWindow = CreateWindow("Direct3D window",
                             pcName,
                             WS_VISIBLE | WS_OVERLAPPEDWINDOW,
                             GetSystemMetrics(SM_CXSCREEN) / 2 - iWidth / 2,
                             GetSystemMetrics(SM_CYSCREEN) / 2 - iHeight / 2,
                             iWidth,
                             iHeight,
                             NULL,
                             NULL,
                             GetModuleHandle(NULL),
                             NULL);
    if(g_hWindow == NULL)
    {
        TB_ERROR("Erstellung des Fensters ist fehlgeschlagen!\n", TB_ERROR);
    }

    // Alles OK!

    TB_INFO("Fenster wurde erstellt!");

    return TB_OK;
}

// ******************************************************************

// Funktion zum Herunterfahren der Fensterkomponente

tbResult ExitWindow()
{
    // Klasse löschen

    UnregisterClass("Direct3D window", GetModuleHandle(NULL));

    TB_INFO("Fensterkomponente wurde heruntergefahren!");

    return TB_OK;
}

// ******************************************************************

// Die Nachrichtenfunktion des Fensters

LRESULT WINAPI WindowProc(HWND hWindow,
                          unsigned int uiMessage,
                          WPARAM WParam,
                          LPARAM LParam)
{
    PAINTSTRUCT Paint;

    switch(uiMessage)
    {
    case WM_CREATE:
        break;

    case WM_PAINT:
        // Das Fenster mit Schwarz füllen

        BeginPaint(hWindow, &Paint);
        FillRect(Paint.hdc, &Paint.rcPaint, (HBRUSH)(GetStockObject(BLACK_BRUSH)));
        EndPaint(hWindow, &Paint);
        break;

    case WM_CLOSE:
        DestroyWindow(hWindow);
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hWindow, uiMessage, WParam, LParam);
    }

    return TRUE;
}


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
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;
    }

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

50

31.08.2008, 14:37

und die Datei mit dieser Funktion ist sicher im Projekt eingebunden?

Werbeanzeige