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 obenBibliothek-Dateien
D:\ogre\DXSDK\Lib ebenfalls ganz obenWas 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:DMal 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:DMal 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:DMal 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?