DirectDraw: Fehler beim linken



  • Hallo!

    ich habe die Suchfunktion schon genutzt und auch etwas gefunden, leider wurde das Problem nie gelöst ( ist exakt das Problem was ich auch habe )

    http://www.c-plusplus.net/forum/viewtopic.php?t=20530&highlight=externe+verweise

    Hier der Fehler

    **
    --------------------Konfiguration: DirectDraw Initialization Demo - Win32 Debug--------------------
    Kompilierung läuft...
    DirectDraw Initialization Demo.cpp
    Linker-Vorgang läuft...
    DirectDraw Initialization Demo.obj : error LNK2001: Nichtaufgeloestes externes Symbol _DirectDrawCreateEx@16
    DirectDraw Initialization Demo.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IDirectDraw7
    Debug/DirectDraw Initialization Demo.exe : fatal error LNK1120: 2 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    DirectDraw Initialization Demo.exe - 3 Fehler, 0 Warnung(en)**

    Tjo... ich hab soviel mitbekommen das er lib's nicht finden kann, hier meine Pfade (Extras->Optionen->Verzeichnisse):

    Include-Dateien
    D:\ogre\DXSDK\include ganz oben

    Bibliothek-Dateien
    D:\ogre\DXSDK\Lib ebenfalls ganz oben

    Was mache ich falsch? Falls es doch relevant sein sollte hier der Code ( ist eine bloße cpp Datei die compiliert werden soll ):

    // INCLUDES ///////////////////////////////////////////////
    #define WIN32_LEAN_AND_MEAN  // just say no to MFC
    
    #include <stdafx.h>    // Zum kompilieren
    #include <windows.h>   // wichtigen windows stuff einfügen
    #include <windowsx.h> 
    #include <mmsystem.h>
    #include <iostream.h> // wichtigen C/C++ stuff einfügen
    #include <conio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <memory.h>
    #include <string.h>
    #include <stdarg.h>
    #include <stdio.h> 
    #include <math.h>
    #include <io.h>
    #include <fcntl.h>
    
    #include <ddraw.h> // include directdraw
    
    // DEFINES ////////////////////////////////////////////////
    #define WINDOW_CLASS_NAME "WINCLASS1"
    
    // directdraw stuff
    
    LPDIRECTDRAW7         lpdd         = NULL;   // dd object
    
    // GLOBALS ////////////////////////////////////////////////
    HWND      main_window_handle = NULL; // globally track main window
    HINSTANCE hinstance_app      = NULL; // globally track hinstance
    char buffer[80];                     // Zum String speichern ( global)
    
    // MACROS /////////////////////////////////////////////////
    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
    #define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
    
    // FUNCTIONS //////////////////////////////////////////////
    LRESULT CALLBACK WindowProc(HWND hwnd, 
    						    UINT msg, 
                                WPARAM wparam, 
                                LPARAM lparam)
    {
    // Hauptnachrichtenverarbeiter
    PAINTSTRUCT		ps;		// wird in WM_PAINT genutzt
    HDC				hdc;	// handle zu einem device context
    
    // Message holen 
    switch(msg)
    	{	
    	case WM_CREATE: 
            {
    		// Einmalige Aktionen
    
    		return(0);
    		} break;
    
    	case WM_PAINT: 
    		{
    		// Fensterzeichnen 
       	    hdc = BeginPaint(hwnd,&ps);	 
    
            // Zeichnen beenden
            EndPaint(hwnd,&ps);
    
            // Erfolg mit return melden
    		return(0);
       		} break;
    
    	case WM_DESTROY: 
    		{
    		// Programm beenden sendet eine WM_QUIT message
    		PostQuitMessage(0);
    
            // return success
    		return(0);
    		} break;
    
    	default:break;
    
        } // end switch
    
    // Alle anderen Message die hier nicht aufgeführt wurden werden verarbeitet 
    return (DefWindowProc(hwnd, msg, wparam, lparam));
    
    } // WinProc beenden
    
    //// Spielfunktionen ///////////////////////////////////////////////////////////////////////////
    int Game_Main(void *parms = NULL, int num_parms = 0)
    {
    
    // Wenn ESC gedrückt wird soll Programm beendet werden
    if (KEYDOWN(VK_ESCAPE))
       SendMessage(main_window_handle,WM_CLOSE,0,0);
    
    // liefert Erfolg(1) oder Misserfolg zurück
    return(1);
    
    } 
    
    ////////////////////////////////////////////////////////////
    
    int Game_Init(void *parms = NULL, int num_parms = 0)
    {
    	// Wird einmal zu Beginn aufgerufen, z.B. für ein Intro
    	DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL);
    	lpdd->SetCooperativeLevel(main_window_handle, DDSCL_NORMAL);
    
    return(1);
    
    } 
    
    /////////////////////////////////////////////////////////////
    
    int Game_Shutdown(void *parms = NULL, int num_parms = 0)
    {
    	// Aufräumarbeiten und Extro
    	if (lpdd)
    	{
    		lpdd->Release();
    		lpdd = NULL;
    	}
    return(1);
    
    } // end Game_Shutdown
    
    // WINMAIN ////////////////////////////////////////////////////////////////////////////////////
    
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
    {
    	WNDCLASSEX winclass;
    	HWND hwnd;
    	MSG msg;
    
    	// Fenstereigenschaften
    	winclass.cbSize = sizeof(WNDCLASSEX);
    	winclass.style  = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
    	winclass.lpfnWndProc = WindowProc;
    	winclass.cbClsExtra = 0;
    	winclass.cbWndExtra = 0;
    	winclass.hInstance = hinstance;
    	winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    	winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    	winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    	winclass.lpszMenuName = NULL;
    	winclass.lpszClassName = WINDOW_CLASS_NAME;
    	winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    
    	// Speicher hinstance in einer globalen Variable
    
        hinstance_app = hinstance;
    
    	// Fensterklasse registrieren
    	if(!RegisterClassEx(&winclass))
    		return(0);
    
    	// Fenster erschaffen
    	if(!(hwnd = CreateWindowEx(NULL, WINDOW_CLASS_NAME, "T3D GameConsole Version 1.0",
    		                       WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    							   0,0,     // Fenster Startkoordinaten x,y
    							   400,300, //Fenstergröße x,y
    							   NULL,NULL, hinstance, NULL)))
    		return(0);
    
    	// Hauptwindowhandle speichern
    	HWND main_window_handle = hwnd;
    
    	// Spiel wird hier initialisiert
    	Game_Init();
    
    	// Hauptereignisschleife
    	while(TRUE)
    	{
    		// Wenn es eine Nachricht gibt hol sie dir
    		if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    		{
    			if(msg.message == WM_QUIT)
    				break;
    
    			// Übersetze jegliche Eingaben
    			TranslateMessage(&msg);
    
    			// Nachricht zum window proc senden
    			DispatchMessage(&msg);
    		}
    
    	  // Spielaktionen
    	  Game_Main();
    	}
    
    	Game_Shutdown();
    
    	return(msg.wParam);
    
    } // Winmain schließen
    

    Ideen? 😕 😕 😕 ➡ 💡 ?



  • Habs hinbekommen, ein Freund half mir:

    einfach bei projekteinstellungen ddraw und dxguid libs hinzufügen!



  • DDrawNeuling schrieb:

    Hallo!

    ich habe die Suchfunktion schon genutzt und auch etwas gefunden, leider wurde das Problem nie gelöst ( ist exakt das Problem was ich auch habe )

    http://www.c-plusplus.net/forum/viewtopic.php?t=20530&highlight=externe+verweise

    Ich habe - weil ich g'rade meinen sozialen habe - Deinen Kot tatsächlich mal in ein VC++ Projekt gesteckt:

    Nachdem ich "#include <stdafx.h>" wegkommentiert hatte, kamen die gleichen Fehler wie bei Dir!
    Allerdings wurde das Problem sehr wohl gelöst:

    real goku schrieb:

    bei mir klappt der code. hast vielleicht die libs vergessen?
    ddraw.lib and dxguid.lib

    (...wie ich g'rade sehe)

    Ein

    #pragma comment(lib, "ddraw.lib")
    #pragma comment(lib, "dxguid.lib")
    

    am Anfang wirkt Wunder!!
    Oder Du solltest die Libs manuell hinzufügen:
    Unter VC++ bei Projekt->Vorhandenes Element hinzufügen... und LIB-Dateien wählen, sodann die beiden genannten Dateien auswählen und mit OK bestätigen.

    Wenn man mal ins Handbuch der IDE / des Compilers und Linkers guckt, würde das sicher Wunder wirken... 😉 🙄 🤡



  • OMG... hat er sich schon selber geholfen...

    Die ganze Tipperei umsonst... *heul* 👎 😡



  • sollte in die FAQ



  • Sgt. Nukem schrieb:

    OMG... hat er sich schon selber geholfen...

    Die ganze Tipperei umsonst... *heul* 👎 😡

    🙄



  • @DDrawNeuling
    Also was du da alles fürn Shit includierst ist ja der lacher hoch 9 :D:D:D

    Mal ehrlich: für den code brauchste die ganzen Header doch gar net mal im Traum :D:D:D:D LOL



  • Infaq schrieb:

    sollte in die FAQ

    Sag bloß, der std::fehler aller Newbies is' noch nicht in der FAQ aufgeführt...!?!?! 😮 🙄

    *** schrieb:

    @DDrawNeuling
    Also was du da alles fürn Shit includierst ist ja der lacher hoch 9 :D:D:D

    Mal ehrlich: für den code brauchste die ganzen Header doch gar net mal im Traum :D:D:D LOL

    Besonders mit dem Kommentar

    // wichtigen C/C++ stuff einfügen
    

    wirkt das geil! 😋 👍



  • *** schrieb:

    @DDrawNeuling
    Also was du da alles fürn Shit includierst ist ja der lacher hoch 9 :D:D:D

    Mal ehrlich: für den code brauchste die ganzen Header doch gar net mal im Traum :D:D:D:D LOL

    zudem er bis auf die header fast 1 zu 1 von gamedev.net kopiert wurde ...



  • Ja, lacht Ihr nur, Ihr wusstet natürlich von Anfang an alles, Ihr habt selber niemals Hilfe benötigt.

    Auch "dumme", offentsichtliche Fehler habt nicht gemacht, stets waren eure Programme perfekt.

    Ich weiß selber das die meisten Header-Dateien überflüssig sind, aber das was Ihr da seht ist eine Codemischung zwischen meinem Code und fremden Code.

    Und anstatt jemanden einfach nett auf seine Fehler hinzuweisen wird man ausgelacht und verarscht.

    Na ja, wieso rege ich mich eigentlich auf? Über die Ignoranz von Sgt.Nukem kann man einfach nur noch hinwegsehen, ich weiß schon warum ich so selten wie möglich eine Frage hier stelle. 👎

    Gruß

    der Neuling



  • hey, wir machen keine Fehler.
    -Wir haben gleich mit Doom 5 abgefangen.
    -DirectDarw haben wir gar nicht verwendet. Wir haben unsere eigene API geschrieben.
    -Und für die 3D Programmierung bauen wir unsere eigenen 3D Chips, weil die von ATI und nVidia nicht so gut sein können wie unsere.
    -Bill Gates kommt immer zu uns wenn er nicht mehr weiss wie er mit DirectX weiter machen soll.
    -OpenGL war ein Hobbyprojekt dieses Forums.

    Und wir nützen jede Gelegenheit jeden fertig zu machen der einen Fehler postet. Weil sonst hier niemand einen Fehler macht.



  • DDrawNeuling1 schrieb:

    Ja, lacht Ihr nur, Ihr wusstet natürlich von Anfang an alles, Ihr habt selber niemals Hilfe benötigt.

    Auch "dumme", offentsichtliche Fehler habt nicht gemacht, stets waren eure Programme perfekt.

    Richtig, woher kennt du uns so genau? Wir konnten damals unsere Genialität doch noch garnicht über das Netz mitteilen!



  • P.S. Wir sind Helden!



  • DDrawNeuling1 schrieb:

    Na ja, wieso rege ich mich eigentlich auf? Über die Ignoranz von Sgt.Nukem kann man einfach nur noch hinwegsehen, ich weiß schon warum ich so selten wie möglich eine Frage hier stelle. 👎

    EINE UNVERSCHÄMTHEIT!!! 👎 😡

    Ham'se Dir ins Hirn geschissen!?!?

    Ich war der einzige, der Dir ÜBERHAUPT geholfen hat, und SINNVOLL auf Dein Problem einging!!
    Hab' sogar Deinen Kot in ein Projekt inkludiert, um mögliche Coding-Fehler auszuschliessen!! (Obwohl man sich das Problem hätte denken können)

    Daß Du innerhalb dieser 10 Min. das Problem selbst gebannt hast, konnte ICH ja nicht ahnen!! 😡

    Also bist *DU* wohl IGNORANT!!! Hast meine Hilfestellung IGNORIERT (und sogar die im Vorgängerthread, der angeblich nicht geholfen hätte)!!!

    Aber Unwissenheit ist ja bekanntlich ein Segen... 🙄

    😡 ➡ 💡



  • Ja, gibts mir, provozier mich, schlag mich, gib mir Tiernamen.

    Oh man, beruhig dich erstmal, dir braucht man ja nur ein

    " 😡 "

    zu zeigen und du drehst wetten durch 😃 😃

    🕶 bleiben



  • DDrawNeuling01 schrieb:

    Ja, gibts mir, provozier mich, schlag mich, gib mir Tiernamen.

    Oh man, beruhig dich erstmal, dir braucht man ja nur ein

    " 😡 "

    zu zeigen und du drehst wetten durch 😃 😃

    🕶 bleiben

    Bist Du bescheuert?!?

    Nur weil ich ein " 😡 " poste heißt das doch nicht, daß ich mich hier wirklich irgendwie aufrege... oh Mann!
    Is' mir doch im Endeffekt sowat von scheißegal... LOL
    Ich setz' mir gleich noch'n Kaffee auf, und dann spiel' ich'n bisserl an mir rum, wenn ich Bock hab'. Oder warte auf morgen, dann kann die Freundin das übernehmen...
    😃 😃
    In der Zeit kannst Du ja gerne noch'n paar Linker-Fehler produzieren... 🤡
    *rülps*

    [EDIT]BTW: *ICH* hatte das " 😡 " gepostet, nicht Du!! 😉



  • Ja, ich bin bescheuert 🙄

    Hier, nur für dich hab ichs zusammengekürzt. Was für Linkerfehler meinst du eigentlich :p
    Und jetzt kannst du den harten macker raushängen lassen und mir zeigen das man das ja noch derbe weiter kürzen kann 👍 🕶

    // INCLUDES ///////////////////////////////////////////////
    #define WIN32_LEAN_AND_MEAN  
    #include "ddraw.h"
    
    // DEFINES ////////////////////////////////////////////////
    #define WINDOW_CLASS_NAME "WINCLASS1"
    
    // DirectDraw 
    LPDIRECTDRAW7         lpdd         = NULL;   
    
    // GLOBALS ////////////////////////////////////////////////
    HWND      main_window_handle = NULL; 
    HINSTANCE hinstance_app      = NULL; 
    char buffer[80];          
    
    // Funktionen //////////////////////////////////////////////
    
    LRESULT CALLBACK WindowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
    {
    PAINTSTRUCT		ps;		
    HDC				hdc;	
    
    switch(msg)
    	{	
    	case WM_PAINT: 
    		{	
       	          hdc = BeginPaint(hwnd,&ps);	 
                       EndPaint(hwnd,&ps); 
    		return(0); 
       		} break;
    
    	case WM_DESTROY: 
    		{
    		PostQuitMessage(0);
    		return(0); 
    		}break;
    	default:break;
        } 
    return (DefWindowProc(hwnd, msg, wparam, lparam));
    }
    
    ///Initialisierungen ("Intro")//////////////////////////////
    
    int Game_Init(void *parms = NULL, int num_parms = 0)
    {
    	DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL);
    	lpdd->SetCooperativeLevel(main_window_handle, DDSCL_NORMAL);
    	return(1);
    } 
    
    /////Aufräumarbeiten ("Extro")//////////////////////////
    
    int Game_Shutdown(void *parms = NULL, int num_parms = 0)
    { 
    	if (lpdd)
    	{
    		lpdd->Release();
    		lpdd = NULL;
    	}
    return(1);
    }
    
    // WINMAIN ////////////////////////////////////////////////////////////////////////////////////
    
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
    {
    	WNDCLASSEX winclass;
    	HWND hwnd;
    	MSG msg;
    
    	winclass.cbSize = sizeof(WNDCLASSEX);
    	winclass.style  = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
    	winclass.lpfnWndProc = WindowProc;
    	winclass.cbClsExtra = 0;
    	winclass.cbWndExtra = 0;
    	winclass.hInstance = hinstance;
    	winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    	winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    	winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    	winclass.lpszMenuName = NULL;
    	winclass.lpszClassName = WINDOW_CLASS_NAME;
    	winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    
             hinstance_app = hinstance;
    
    	if(!RegisterClassEx(&winclass))
    		return(0);
    
    	if(!(hwnd = CreateWindowEx(NULL, WINDOW_CLASS_NAME, "DirectDraw Initialization Demo 1.0"
    WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    0,0,400,300, NULL,NULL, hinstance, NULL)))
    		return(0);
    	HWND main_window_handle = hwnd;
    	Game_Init();
    
    	while(TRUE)
    	{
    		if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    		{
    			if(msg.message == WM_QUIT)
    				break;
    			TranslateMessage(&msg);
    			DispatchMessage(&msg);
    		}
    	  Game_Main();
    	}
    	Game_Shutdown();
    	return(msg.wParam);
    }
    


  • DDrawNeuling001 schrieb:

    Ja, ich bin bescheuert 🙄

    Tut mir leid das zu hören... 🙄

    DDrawNeuling001 schrieb:

    Hier, nur für dich hab ichs zusammengekürzt. Was für Linkerfehler meinst du eigentlich :p

    Diese:

    DDrawNeuling schrieb:

    Hier der Fehler

    **--------------------Konfiguration: DirectDraw Initialization Demo - Win32 Debug--------------------
    Kompilierung läuft...
    DirectDraw Initialization Demo.cpp
    Linker-Vorgang läuft...
    DirectDraw Initialization Demo.obj : error LNK2001: Nichtaufgeloestes externes Symbol _DirectDrawCreateEx@16

    [...] etc. pp**

    🙄

    DDrawNeuling001 schrieb:

    Und jetzt kannst du den harten macker raushängen lassen und mir zeigen das man das ja noch derbe weiter kürzen kann 👍 🕶

    Hab' ich das nötig...!?? 🙄

    Nee, im Ernst: Ich weiß nichtmal wie man DirectDraw richtig schreibt... 🤡



  • Wusst ichs doch, du lässt hier nur den harten Macker raushängen dabei kannst du gar nichts 🙄

    Außerdem empfehle ich dir ein abwechslungsreichere Smiliewahl :p



  • Bescheuerter Thread mit bescheuerten Leute, oder wie funzt das hier?


Log in to reply