ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
4707
4707
EMPFEHLEN
-
N'abend, ich bin neu hier und lerne auch erst seit kurzem C++. Daher habe ich mir aus verschiedenen Tutorials was zusammengeschrieben. Nur jetzt knabbere ich seit ein paar Tagen an einer Fehlermeldung die partout nicht weggehen möchte.
Das "Programm" funktioniert auch wunderbar, bis auf die Funktion "Grafik_initalisieren", denn nehme ich den Befehl "Grafik_initalisieren();" heraus, kann er ihn fehlerlos compilieren.
Ich benutze als Compiler Visual C++ 2005 Express Edition.
Als Fehlermeldung erhalte ich folgende:
1>MAIN.obj : error LNK2028: unresolved token (0A000025) "void __cdecl Grafik_initalisieren(void)" (?Grafik_initalisieren@@$$FYAXXZ) referenced in function "bool __cdecl Bild_erstellen(void)" (?Bild_erstellen@@$$FYA_NXZ)
1>MAIN.obj : error LNK2019: unresolved external symbol "void __cdecl Grafik_initalisieren(void)" (?Grafik_initalisieren@@$$FYAXXZ) referenced in function "bool __cdecl Bild_erstellen(void)" (?Bild_erstellen@@$$FYA_NXZ)
1>C:\Dokumente und Einstellungen\Admin\Eigene Dateien\Visual Studio 2005\Projects\Engine\Debug\Engine.exe : fatal error LNK1120: 2 unresolved externals
Hier ist nochmal der gekürtzt Code, und ich hoffe ich habe nichts vergessen
Code :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 101 102 103 104 105 106
///////////////////////////////////Header////////////////////////////////// #include <windows.h> #include <d3d9.h> ////////////////////////////////////Globale Variablen////////////////////// //Direct X LPDIRECT3D9 D3D9 ; LPDIRECT3DDEVICE9 D3D9Dev = NULL ; LPDIRECT3DVERTEXBUFFER9 D3DVertexBuffer9 = NULL ; //Für Fenster HWND hWnd; //Für Bildschrimgröße int nBreite = GetSystemMetrics(SM_CXSCREEN); int nHoehe = GetSystemMetrics(SM_CXSCREEN); //Für Framebremse DWORD dwStartzeit; /////////////////////////////////////Funktionen///////////////////////////// bool Bild_erstellen (void); void Bild_rendern (void); void Programm_beenden (void); void Grafik_initalisieren (void); /////////////////////////////////////Strukturen///////////////////////////// struct VERTEX {float x , y , z , rhw ; DWORD color ;}; #define COSTUMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE ) /////////////////////////////////////CallBack-Funktion////////////////////// LRESULT CALLBACK WindowProc (HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam) {gekürzt} ///////////////////////////////////////WinMain-Funktion/////////////////////// int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nShowCmd ) {gekürtz}; /////////////////////////////////////////////PHASE 1//////////////////////////////// bool Bild_erstellen(void) { //Present Parameter festlegen und Eingeschaften bestimmen D3DPRESENT_PARAMETERS D3DPP; SecureZeroMemory(&D3DPP , sizeof(D3DPP)); D3DPP.hDeviceWindow = hWnd ; D3DPP.Windowed = false ; D3DPP.SwapEffect = D3DSWAPEFFECT_DISCARD ; D3DPP.BackBufferFormat = D3DFMT_X8R8G8B8 ; D3DPP.BackBufferWidth = nBreite ; D3DPP.BackBufferHeight = nHoehe ; //Direct X Objekt erzeugen if(!(D3D9 = Direct3DCreate9(D3D_SDK_VERSION))) return false; //Bild erstellen D3D9 -> CreateDevice ( D3DADAPTER_DEFAULT , D3DDEVTYPE_HAL , hWnd , D3DCREATE_HARDWARE_VERTEXPROCESSING , &D3DPP , &D3D9Dev ); //Grafik initalisieren Grafik_initalisieren(); return true; }; ; ////////////////////////////////////////////PHASE 2/////////////////////////////////// void Bild_rendern(void) {gekürzt}; ////////////////////////////////////////////PHASE 3///////////////////////////////////// void Programm_beenden(void) {gekürzt}; /////////////////////////////////////////////PHASE 4////////////////////////////////////// void Grafik_initialisieren(void) { VERTEX t_vert[] = { { nBreite / 2, nHoehe * 0.03125, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 200, 0), }, { nBreite - (nBreite * 0.0234375), nHoehe - (nHoehe * 0.03125), 0.5f, 1.0f, D3DCOLOR_XRGB(100, 0, 0), }, { nBreite * 0.0234375, nHoehe - (nHoehe * 0.03125), 0.5f, 1.0f, D3DCOLOR_XRGB(125, 75, 0), }, }; D3D9Dev->CreateVertexBuffer( 3*sizeof(VERTEX), 0 , COSTUMFVF , D3DPOOL_MANAGED , &D3DVertexBuffer9 , NULL); VOID* pVoid; D3DVertexBuffer9 -> Lock(0 , 0 , (void**)&pVoid , 0); memcpy(pVoid , t_vert , sizeof(t_vert)) ; D3DVertexBuffer9 -> Unlock() ; return; }Die 3 größten Katastrophen der Menschheit:
Hiroshima '45
Tschernobyl '86
Windows 98
-
Zitat von MSAB
dein Problem ist einfacher als du denkst xD
Du hast dich einfach vertippt.
du hast initalisieren anstelle von initialisieren geschrieben.
EDIT: übrigens, wenn das eine Engine werden soll, dann kann ich dier nur empfehlen Klassen zu verwenden und nimm Aussagekräftigere Namen für deine Funktionen...
Unter Bild_erstellen versteh ich nicht die initialisieren von Direct3DGeändert von Flegmon (12.08.06 um 20:36 Uhr)
-
Boa, verdammt. Und ich sitz da Tage davor.

Naja, danke. Ich hab den Wald vorlauter Bäumen wohl nicht mehr gesehen
Trotzdem hab ich jetzt das nächste Problem. Compilieren lässt sich das jetzt, aber das Programm stürtzt ab. Da kommt wohl noch viel Arbeit auf mich zu...
//Edit auf dein EDit: Joa, das soll es mal werden. Wie gesagt, bin noch nicht lange dabei und hab erstma die bezeichnugnen aus den Tutorials genommenGeändert von MSAB (12.08.06 um 20:44 Uhr)
Die 3 größten Katastrophen der Menschheit:
Hiroshima '45
Tschernobyl '86
Windows 98
-
Das mit dem abstürzen, das Problem hatte ich am Anfang auch, dass es nie sofort gehen wollte

Versuche das ganze im Fenster auszuführen, dann kannst du auch mit dem Debugger arbeiten. Das erleichtert die Fehlersuche enorm.
Es ist nur so, vor allem bei DirectX, dass der Fehler oft nicht da is, wo der Debugger hält -.-
Wenn die Funktionen in deinem Tutorial so genannt werden, kann ich dier nur empfehlen ein anderes zu suchen.
Zitat von MSAB
Ich würde dir empfehlen ein Buch zu dem Thema zu kaufen. Die sind zwar oft teuer (~30 - 50€) aber da hat man wenigstens ein Rundumwerk, dass alle Grundlagen behandelt.
-
Thx für den Tipp, dass ich's im Fenster ausführen sollte, der Debugger war anschließend nämlich überflüssig. Das "Programm" funktioniert im Fenstermodus wunderbar, aber im halt Vollbild nicht
.
Im Vollbild wiederum funktioniert es, wenn ich die Funktion Grafik_initialisieren nicht drinnen hab.
Die Funktion scheint sich also mit dem Vollbild nicht zu vertragen
Manmanman...
Das mit dem Buch hatte ich auch schon überlegt, werd ich vll. auch später mal machen.Die 3 größten Katastrophen der Menschheit:
Hiroshima '45
Tschernobyl '86
Windows 98
Ähnliche Themen
-
c++ SDL: Linker error LNK2019
Von markzw im Forum C/C++Antworten: 4Letzter Beitrag: 02.11.10, 16:59 -
Mysql++ Linker Fehler
Von Sapd im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 02.06.10, 09:23 -
Verwendung von Template-Funktion liefert LNK2028/LNK2019-Fehler
Von StehtimSchilf im Forum C/C++Antworten: 7Letzter Beitrag: 18.05.10, 19:44 -
Linker Fehler... hurra
Von NotThatJenny im Forum C/C++Antworten: 1Letzter Beitrag: 03.02.08, 14:35 -
Wieder mal LNK2019 Fehler, etc.
Von ProgFreak im Forum C/C++Antworten: 6Letzter Beitrag: 21.12.05, 11:06





Zitieren
Login






