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
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
![Roll eyes :rolleyes: :rolleyes:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f644.png)
Code:
///////////////////////////////////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;
}