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

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

1

08.07.2006, 11:48

DDraw

moin .. hab da ein problem bei einem tutorial für ddraw ..

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
#include <windows.h>
#include <ddraw.h>


LPDIRECTDRAW7       lpDirectDraw;   // DirectDraw-Objekt

HRESULT             ddrval;

LONG FAR WINAPI WndProc (HWND , UINT , UINT , LONG) ;

int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance , 
                    LPSTR lpCmdLine , int nCmdShow)
{
    MSG      msg      ;  
    HWND     hwnd     ;   
    WNDCLASS wndclass ; 

    LPCTSTR WindowClassName = L"DDWinClass";
    LPCTSTR WindowTitle = L"DirectDraw - Tutorial";

    if (!hPrevInstance)
    {
        wndclass.style         = CS_HREDRAW | CS_VREDRAW  ;
        wndclass.lpfnWndProc   = WndProc ;
        wndclass.cbClsExtra    = 0 ;
        wndclass.cbWndExtra    = 0 ;
        wndclass.hInstance     = hInstance   ;
        wndclass.hIcon         = LoadIcon (NULL , IDI_APPLICATION) ;
        wndclass.hCursor       = LoadCursor (NULL , IDC_ARROW)  ; 
        wndclass.hbrBackground = (HBRUSH)GetStockObject (LTGRAY_BRUSH)  ;
        wndclass.lpszMenuName  = NULL              ;
        wndclass.lpszClassName = WindowClassName ; 
        RegisterClass (&wndclass) ;    
    }
    hwnd = CreateWindow (WindowClassName , 
                         WindowTitle , 
                         WS_OVERLAPPEDWINDOW , 
                         CW_USEDEFAULT , 
                         CW_USEDEFAULT ,
                         CW_USEDEFAULT , 
                         CW_USEDEFAULT ,     
                         NULL , NULL , 
                         hInstance , NULL) ;     
    ShowWindow   (hwnd , nCmdShow) ;  
    UpdateWindow (hwnd) ;

    ddrval = DirectDrawCreateEx(NULL, (VOID**)&lpDirectDraw, IID_IDirectDraw7, NULL); 
    if (ddrval != DD_OK)
    {
        return (0);
    }    

    ddrval = lpDirectDraw->SetCooperativeLevel (hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
    if (ddrval != DD_OK)
    {
        lpDirectDraw->Release();
        lpDirectDraw = NULL;
        return (0);
    }

    ddrval = lpDirectDraw->SetDisplayMode (640, 480, 8, 0, 0);
    if (ddrval != DD_OK)
    {
        lpDirectDraw->Release();
        lpDirectDraw = NULL;
        return (0);
    }

    while(1)
    {
        if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
        { 
            if (msg.message == WM_QUIT) break;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    } 

    if (lpDirectDraw != NULL)
    {
        lpDirectDraw->Release();
        lpDirectDraw = NULL;
    }

    return msg.wParam ;
}


LONG FAR WINAPI WndProc (HWND hwnd , UINT message , 
                         UINT wParam , LONG lParam) 
{ 
    switch (message)
    {
        case WM_DESTROY:
        {
            PostQuitMessage (0) ; 
            return 0 ;
        } break;
    } // switch (message)

    return DefWindowProc (hwnd , message , wParam , lParam) ;
} // WndProc



der compiler sagt dazu:

Zitat


Error 4 error LNK2001: unresolved external symbol _IID_IDirectDraw7 DDraw.obj

...

Error 3 error LNK2019: unresolved external symbol _DirectDrawCreateEx@16 referenced in function _WinMain@16 DDraw.obj

...

Error 5 fatal error LNK1120: 2 unresolved externals C:\Dokumente und Einstellungen\$ilentSnooc\Eigene Dateien\Visual Studio 2005\C++ Projects\3D Programmierung\S37\Übungen\DirectDraw\Debug\DirectDraw.exe 1



kann mir wer helfen? :cry:
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Anonymous

unregistriert

2

08.07.2006, 11:53

Das hatte ich auch vor kurzem, ein ganz blöder Fehler:

In der Directory Einstellungen, wo du das DXSDK eingebunden hast
musst du die DXSDK Verzeichnisse an die erste Stelle verschieben, dann
gehts!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

08.07.2006, 11:53

Sagt das Tutorial nicht, dass du ddraw.lib (und wahrscheinlich auch dxguid.lib) linken musst?

Zitat von »"DarkRaider"«

In der Directory Einstellungen, wo du das DXSDK eingebunden hast musst du die DXSDK Verzeichnisse an die erste Stelle verschieben, dann gehts!

Das sollte man zwar tun, aber das löst das Problem nicht.

Anonymous

unregistriert

4

08.07.2006, 11:55

Bei mir hat es das Problem gelöst, ich hatte alles richtig gelinkt und auch
alle Header eingebunden, dann habe ich nach 2 Tagen die Verzeichnisse
nach oben verschoben und es ging und ich hatte genau die gleichen Fehler
wie $nooc.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

08.07.2006, 12:04

Zitat von »"David Scherfgen"«

Sagt das Tutorial nicht, dass du ddraw.lib (und wahrscheinlich auch dxguid.lib) linken musst?


Wo befinden sich diese Lib-Dateien

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

6

08.07.2006, 12:06

also ..

verzeichnis ist angegeben ..

bei mir:
C:\Programme\Microsoft DirectX SDK (December 2005)\Lib\x86

ich benutze VC++ 2005 Express

da geh ich doch auf

Project->Project Properties-> Configurations auf "All configurations" ->Linker->Command Line-> schreiben: ddraw.lib, dxguide.lib

oder?

jetzt schreibt mein compiler:

Zitat


Error 1 fatal error LNK1104: cannot open file 'ddraw.lib,' DirectDraw


:roll:
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Anonymous

unregistriert

7

08.07.2006, 12:09

Project->Project Properties->Configuration Properties->Linker->Input
und dann bei Additional Depencies kannst du die Libs eintragen.
@ Fred: Die Libs befinden sich im DXSDK Verzeichnis!?

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

8

08.07.2006, 12:14

Aber wenn ich das DXSDK-lib-Verzeichnis eingebunden habe muss ich die nicht mehr extra einbinden oder

Anonymous

unregistriert

9

08.07.2006, 12:15

Ähm...Ich versteh nicht ganz...Du musst das Verzeichnis bei den
Directories eintragen und die Libraries dann bei

Project->Project Properties->Configuration Properties->Linker->Input

eintragen...

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

10

08.07.2006, 12:19

Alos ich habe das Lib-Verzeichnis des DXSDK eingefügt
Extras->Opitonen->Projekte und Projektmappen->VC++Verzeichnisse

Und jetzt muss ich die genannten Libs auch noch bei
Project->Project Properties->Configuration Properties->Linker->Input
Einfügen?

Wenn ja muss ich dort den genauen Pfad angeben oder einfach ddraw.lib eingeben?

Werbeanzeige