... ist bereits in 2D Engine.lib definiert

Hallo,

Ich wollte heute versuchen eine sehr sehr kleine 2D Engine zu schreiben, naja eigentlich nur etwas was DX9 startet, eine Sprite laden kann und halt anzeigen. Dann hab ich es als lib und dll kompillert und in ein anderes Projekt eingebunden. Wenn ich nun das andere Projekt starten will kommt immer das

Fehler 7 error LNK2001: Nicht aufgelöstes externes Symbol „„int __cdecl ShowSprite(struct ID3DXSprite *,struct IDirect3DTexture9 *,int,int)“ (?ShowSprite@@YAHPAUID3DXSprite@@PAUIDirect3DTexture9@@HH@Z)“. 2DEngine Test.obj
Fehler 1 error LNK2005: „struct _D3DPRESENT_PARAMETERS_ d3dpp“ (?d3dpp@@3U_D3DPRESENT_PARAMETERS_@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 5 error LNK2005: „struct HWND__ * g_hWnd“ (?g_hWnd@@3PAUHWND__@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 2 error LNK2005: „struct IDirect3D9 * g_pD3D“ (?g_pD3D@@3PAUIDirect3D9@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 4 error LNK2005: „struct IDirect3DDevice9 * g_pD3DDevice“ (?g_pD3DDevice@@3PAUIDirect3DDevice9@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 3 error LNK2005: „struct IDirect3DVertexBuffer9 * g_pD3DBuffer“ (?g_pD3DBuffer@@3PAUIDirect3DVertexBuffer9@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 8 fatal error LNK1120: 1 nicht aufgelöste externe Verweise. \Eigene Dateien\Visual Studio 2008\Projects\2DEngine Test\Debug\2DEngine Test.exe

Muss ich da beim erstellen von einer Lib irgendwas machen wie die headerdateien ausschliessen oder so?

Gruß Michael

#include
#include //mein Header
LPD3DXSPRITE g\_pSprite;
LPDIRECT3DTEXTURE9 text;
MSG msg;
Sprite test;
#pragma comment(lib, "2D Engine.lib")
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int ShowCmd)
{
 InitR\_2D();
 g\_hWnd = openwindow("Test", 640,480,0,0, hInstance, msg, NULL);
 makescreen(640,480, 16, "Test");
 LoadSprite(test, "C:\\Test.bmp");
 ShowSprite(test, 0,0);
 FreeSprite(test);
 closescreen();
 while(GetMessage(&msg, NULL, 0,0))
 {
 TranslateMessage(&msg);
 DispatchMessage(&msg);
 }
 return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch(message)
 {
 case WM\_DESTROY:
 {
 PostQuitMessage(0);
 return 0;
 }
 }
 return DefWindowProc(hWnd, message, wParam, lParam);
}

und nochmal die Fehlermeldung, die hat sich ein bisschen geändert.

Fehler 1 error LNK2005: „struct _D3DPRESENT_PARAMETERS_ d3dpp“ (?d3dpp@@3U_D3DPRESENT_PARAMETERS_@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 2 error LNK2005: „struct HWND__ * g_hWnd“ (?g_hWnd@@3PAUHWND__@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 3 error LNK2005: „struct IDirect3D9 * g_pD3D“ (?g_pD3D@@3PAUIDirect3D9@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 4 error LNK2005: „struct IDirect3DDevice9 * g_pD3DDevice“ (?g_pD3DDevice@@3PAUIDirect3DDevice9@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 5 error LNK2005: „struct IDirect3DVertexBuffer9 * g_pD3DBuffer“ (?g_pD3DBuffer@@3PAUIDirect3DVertexBuffer9@@A) ist bereits in 2DEngine Test.obj definiert. 2D Engine.lib
Fehler 6 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol „„int __cdecl ShowSprite(struct Sprite,int,int)“ (?ShowSprite@@YAHUSprite@@HH@Z)“ in Funktion „_WinMain@16“. 2DEngine Test.obj
Fehler 7 fatal error LNK1120: 1 nicht aufgelöste externe Verweise. C:\Dokumente und Einstellungen\Michael Admin\Eigene Dateien\Visual Studio 2008\Projects\2DEngine Test\Debug\2DEngine Test.exe

Kann mir da jemand helfen?

Gruß Michael

Hallo Michael,

Fehler 3 error LNK2005: „struct IDirect3D9 * g_pD3D“
(?g_pD3D@@3PAUIDirect3D9@@A) ist bereits in 2DEngine Test.obj
definiert. 2D Engine.lib

Versuch doch mal,

„struct IDirect3D9 * g_pD3D;“

in eine cpp-datei zu verschieben und schreibe

„extern struct IDirect3D9 * g_pD3D;“

in die h-Datei. Evtentuell behebt das den Linker-Fehler.

Grüße
Thorsten