DirectX "stürzt ab"

Ich habe die Pfade zum c++ toolkit 2003 entfernt und erneut versucht zu kompilieren (im Debug Modus). Erneut Fehlermeldungen, hier das Build Log:
Code:
Buildprotokoll     Erstellen wurde gestartet: Projekt: "dreick", Konfiguration: "Debug|Win32"
 Befehlszeilen     Die temporäre Datei "c:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\dreick\Debug\RSP0000045082544.rsp" wird erstellt. Inhalt:
[
/Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /c /ZI /TP ".\khtd.cpp"
]Erstellen der Befehlszeile "cl.exe @"c:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\dreick\Debug\RSP0000045082544.rsp" /nologo /errorReport:prompt" Ausgabefenster     Kompilieren...
cl : Command line warning D4002 : ignoring unknown option '/errorReport:prompt'
cl : Command line warning D4024 : unrecognized source file type 'ÿþ/', object file assumed
LINK : fatal error LNK1181: cannot open input file ' ?/.obj'
 Ergebnisse     Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\dreick\Debug\BuildLog.htm" gespeichert.
dreick - 1 Fehler, 2 Warnung(en)

Um absolut sicherzugehen, dass dieser Fehler nur im visual studio 2008 auftritt, habe ich den Code aus Code::Blocks originalgetreu in vc++2008 übernommen. Interessanterweise lässt sich , nach einigen kleinen Änderungen (alle rückgängig gemacht) auch der Code in Code::Blocks nicht mehr kompilieren.(!)
Für Hilfe wäre ich sehr dankbar.
Hier noch einmal der Quellcode:
Code:
#include <d3d9.h>
#include <d3dx9.h>
#include <tribase.h>
#include <windows.h>


PDIRECT3D9 g_pd3d=0;
PDIRECT3DDEVICE9 g_pd3ddev=0;
int g_width=1000;
int g_height=1000;
HWND hwnd;               /* This is the handle for our window */
MSG messages;
int g_anzdreiecke=1;
struct SVertex
{tbVector3 vPosition;
tbColor dwColor;
};
SVertex g_tv[3];

init(HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow);
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
void initdx();
void Render();
void Move();
int WINAPI WinMain(HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)
{
init(hThisInstance,hPrevInstance,lpszArgument,nCmdShow);
initdx();
g_pd3ddev->SetRenderState(D3DRS_LIGHTING,FALSE);
g_pd3ddev->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD);
g_pd3ddev->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
g_pd3ddev->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
g_pd3ddev->SetRenderState(D3DRS_ZENABLE,TRUE);
g_pd3ddev->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE);
g_tv[0].vPosition=tbVector3(1.0f,1.0f,1.0f);
g_tv[1].vPosition=tbVector3(2.0f,1.0f,1.0f);
g_tv[2].vPosition=tbVector3(1.5f,2.0f,1.0f);
g_tv[0].dwColor=tbColor(1.0f,0.0f,0.0f);
g_tv[1].dwColor=tbColor(1.0f,0.0f,0.0f);
g_tv[2].dwColor=tbColor(1.0f,0.0f,0.0f);

while(messages.message!=WM_QUIT){
while(PeekMessage(&messages,NULL,0,0,PM_REMOVE))
{TranslateMessage(&messages);
DispatchMessage(&messages);}
Render();
Move();
}
return 0;
}
init(HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)
{WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = "szClassName";
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default colour as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           "szClassName",         /* Classname */
           "Code::Blocks Template Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           g_width,                 /* The programs width */
           g_height,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
ShowWindow (hwnd, nCmdShow);
return 0;};
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}
void Render()
{
g_pd3ddev->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(200,200,200),1.0,(DWORD)0.0f);
g_pd3ddev->BeginScene();
g_pd3ddev->DrawPrimitiveUP(D3DPT_TRIANGLELIST,1,g_tv,sizeof(g_tv));
g_pd3ddev->EndScene();
g_pd3ddev->Present(NULL,NULL,NULL,NULL);
};
void Move(){};
void initdx()
{
g_pd3d=Direct3DCreate9(D3D_SDK_VERSION);
D3DDISPLAYMODE d;
g_pd3d->GetAdapterDisplayMode(0,&d);
D3DPRESENT_PARAMETERS pParam;
ZeroMemory(&pParam,sizeof(pParam));
pParam.BackBufferWidth=d.Width;
pParam.BackBufferHeight=d.Height;
pParam.BackBufferFormat=d.Format;
pParam.BackBufferCount=1;
pParam.MultiSampleType=D3DMULTISAMPLE_NONE;
pParam.MultiSampleQuality=NULL;
pParam.SwapEffect=D3DSWAPEFFECT_COPY;
pParam.hDeviceWindow=hwnd;
pParam.Windowed=TRUE;
pParam.EnableAutoDepthStencil=false;
pParam.Flags=D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
pParam.FullScreen_RefreshRateInHz=d.RefreshRate;
pParam.PresentationInterval=D3DPRESENT_INTERVAL_DEFAULT;
g_pd3d->CreateDevice(0,D3DDEVTYPE_HAL,hwnd,D3DCREATE_MIXED_VERTEXPROCESSING,&pParam,&g_pd3ddev);
};
 
Ich habe das c++ toolkit 2003 nicht deinstalliert, weil ich es mit Code::Blocks verwende,

vc++2008 habe ich keinen anderen Compiler angegeben, ich bin davon ausgegangen, dass es einen "Default"-Compiler konfiguriert hat.

Welchen Compiler würdest du mir empfehlen?
 
anfängerregnäfna hat gesagt.:
Um absolut sicherzugehen, dass dieser Fehler nur im visual studio 2008 auftritt, habe ich den Code aus Code::Blocks originalgetreu in vc++2008 übernommen. Interessanterweise lässt sich , nach einigen kleinen Änderungen (alle rückgängig gemacht) auch der Code in Code::Blocks nicht mehr kompilieren.(!)
Fehlermeldungen. Fehlermeldungen. Fehlermeldungen.
 
Oh, Entschuldigung, hab ich vergessen.
Das Build Log lautet:
Code:
-------------- Build: Debug in dreieck ---------------

Linking console executable: bin\Debug\dreieck.exe
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class tbColor & __thiscall tbColor::operator=(class tbColor const &)" (__imp_4tbColor@@QAEAAV0@ABV0@@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbColor::tbColor(float,float,float)" (__imp_0tbColor@@QAE@MMM@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class tbVector3 & __thiscall tbVector3::operator=(class tbVector3 const &)" (__imp_4tbVector3@@QAEAAV0@ABV0@@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbVector3::tbVector3(float,float,float)" (__imp_0tbVector3@@QAE@MMM@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbColor::tbColor(void)" (__imp_0tbColor@@QAE@XZ) referenced in function "public: __thiscall SVertex::SVertex(void)" (0SVertex@@QAE@XZ)
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbVector3::tbVector3(void)" (__imp_0tbVector3@@QAE@XZ) referenced in function "public: __thiscall SVertex::SVertex(void)" (0SVertex@@QAE@XZ)
bin\Debug\dreieck.exe : fatal error LNK1120: 6 unresolved externals
Process terminated with status 1120 (0 minutes, 0 seconds)
7 errors, 0 warnings
 
Oh, Entschuldigung, hab ich vergessen.
Das Build Log lautet:
Code:
-------------- Build: Debug in dreieck ---------------

Linking console executable: bin\Debug\dreieck.exe
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class tbColor & __thiscall tbColor::operator=(class tbColor const &)" (__imp_4tbColor@@QAEAAV0@ABV0@@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbColor::tbColor(float,float,float)" (__imp_0tbColor@@QAE@MMM@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class tbVector3 & __thiscall tbVector3::operator=(class tbVector3 const &)" (__imp_4tbVector3@@QAEAAV0@ABV0@@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbVector3::tbVector3(float,float,float)" (__imp_0tbVector3@@QAE@MMM@Z) referenced in function _WinMain@16
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbColor::tbColor(void)" (__imp_0tbColor@@QAE@XZ) referenced in function "public: __thiscall SVertex::SVertex(void)" (0SVertex@@QAE@XZ)
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall tbVector3::tbVector3(void)" (__imp_0tbVector3@@QAE@XZ) referenced in function "public: __thiscall SVertex::SVertex(void)" (0SVertex@@QAE@XZ)
bin\Debug\dreieck.exe : fatal error LNK1120: 6 unresolved externals
Process terminated with status 1120 (0 minutes, 0 seconds)
7 errors, 0 warnings
Du hast offenbar vergessen die TriBase Bibliothek einzubinden.

Gruß
 
Ich habe das c++ toolkit 2003 nicht deinstalliert, weil ich es mit Code::Blocks verwende
Aha.
vc++2008 habe ich keinen anderen Compiler angegeben, ich bin davon ausgegangen, dass es einen "Default"-Compiler konfiguriert hat.
Hat es auch. Mein VS 2008 C/C++ Compiler versteht allerdings die /errorReport Option, deiner offensichtlich nicht. Das ist etwas merkwürdig.
Welchen Compiler würdest du mir empfehlen?
Ich weiß nicht wie der Code der TriBase Engine geschrieben ist, evlt. funktioniert der Code nur mit einem best. Compiler. Ansonsten kannst du auch mal MinGW probieren.

Gruß
 
Vielen Dank für den Tip. Ich glaube der MinGW Compiler war sogar bei Code::Blocks dabei. Ansonsten werde ich ihn herunterladen(sofern möglich).
Was meinst du mit
Hat es auch. Mein VS 2008 C/C++ Compiler versteht allerdings die /errorReport Option, deiner offensichtlich nicht. Das ist etwas merkwürdig.

Der Quellcode ist egal. Du hast die Bibliothek (.lib Datei) nicht eingebunden.
Doch, die Datei ist angegeben.
Sowohl bei den "Link Libraries" als auch bei den "Search Directories"
 
Zurück