DirectX "stürzt ab"

Ich glaube bei der installation is einiges durcheinander gegangen. schmeiß mal beide compiler runter + alles was dazu gehört und installier vc.

Dann sollte alles gehen
 
@Anfänger92 ich habe Stunden damit verbracht, Code::Blocks zum Laufen zu bringen. Ich hatte zwar keinen Erfolg, aber alles zu deinstallieren halte ich für eine schlechte Lösung. Erstens funktioniert auch vc++2008 bisher nicht. Zweitens schaffen es ja auch andere Leute mit Code::Blocks zu programmieren.
 
Hi,

naja wenn man die meldung bekommt, das der Compiler falsch ist dann ist da i-wo was ziemlich schief gelaufen.

Normaler weise dauert es nach der installation max. 5 Minuten um z.B. VC++ so einzustellen das alles Funktioniert.

Aber naja
 
Was programmierst du mit vc++2008?
Benutzt du auch DirectX?
Wie hast du vc++2008 eingestellt?

Ich habe versucht vc++2008 zu konfigurieren.
Folgender 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);
tbMatrix w(tbMatrixTranslation(tbVector3(1.0f,1.0f,1.0f)));
g_pd3ddev->SetTransform((D3DTS_WORLD),(D3DMATRIX*)(&w));
tbMatrix v(tbMatrixProjection(100.0f,1.5f,0.0f,100.0f));
g_pd3ddev->SetTransform(D3DTS_PROJECTION,(D3DMATRIX*)(&v));
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 =(LPCWSTR) "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 */
           (LPCWSTR)"szClassName",         /* Classname */
           (LPCWSTR)"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=1;
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);
};
Folgende Fehlermeldung:
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\RSP00000740002456.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\RSP00000740002456.rsp" /nologo /errorReport:prompt" Ausgabefenster     Kompilieren...
khtd.cpp
c:\dokumente und einstellungen\martin klein\eigene dateien\visual studio 2008\projects\dreick\dreick\khtd.cpp(23) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
c:\dokumente und einstellungen\martin klein\eigene dateien\visual studio 2008\projects\dreick\dreick\khtd.cpp(64) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
 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 - 2 Fehler, 0 Warnung(en)
Warum erkeent vc++2008 nicht, dass ich int als Typ angegeben habe?
Ich hänge den Quellcode zur Übersicht noch als .txt an
Anhang anzeigen quellcode.txt
 
Hallo,

C++:
init(HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)
Dort fehlt der Rückgabe Typ der Funktion.
So muss es aussehen (oder ähnlich)
C++:
int init(HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)

Gruß
Anfänger

Edit:
Und ja ich habe VC++ benutzt jetzte aber VS (also die Full).
Habe das Buch auch.
Und Programmiere Hauptsächlich 3D-Anwendungen mit DX.
 
Zuletzt bearbeitet von einem Moderator:
Sollte ein Moderator dies lesen: Falls sie vorhaben eine Version der Bilder der Übersicht zugunsten zu löschen, so nehmen sie bitte die zweite, und nicht die Dritte.
Ich glaube die Qualität der Bilder der Dritten Version ist besser.
Dürfte so passen, oder?

Und nutze bitte zukünftig in deinen Beiträgen unten rechts den "Ändern"-Button, wenn du noch etwas hinzufügen bzw. nachreichen willst, anstatt in den Themen im Minutentakt neue Beiträge zu verfassen - vielen Dank!

Ich hab da mal in diesem und einem weiteren Thema für Ordnung gesorgt, und deine einzelnen Doppel-/Dreifachposts zusammengetackert. Also nicht wundern, weshalb deine Beitragszahl von 36 auf 28 gesunken ist.

mfg Maik
 
Ich habe vc++2008 konfiguriert (Platform SDK DirectX und TriBase Engine angegeben)
Nachdem ich die Fehler mit den Rückgabewerten behoben hatte, habe ich im Menu "erstellen" Kompilieren gewählt
Code:
------ Erstellen gestartet: Projekt: dreick, Konfiguration: Debug Win32 ------
Kompilieren...
Überspringen... (keine relevanten Änderungen gefunden)
khtd.cpp
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\dreick\Debug\BuildLog.htm" gespeichert.
dreick - 0 Fehler, 0 Warnung(en)
========== Erstellen: 1 erfolgreich, Fehler bei 0, 0 aktuell, 0 übersprungen ==========
Nachdem ich das Build Protokoll gelesen hatte, war ich sehr erleichtert, ABER:
Nun wollte ich das Programm ausführen und habe auf den grünen Startpfeil geklickt, für Debugging starten.
Das Projekt wurde erneut kompiliert, aber dieses Mal sah das Build Protokoll nicht so gut aus:
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\RSP00000527441540.rsp" wird erstellt. Inhalt:
[
/OUT:"C:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\Debug\dreick.exe" /INCREMENTAL /MANIFEST /MANIFESTFILE:"Debug\dreick.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\Debug\dreick.pdb" /SUBSYSTEM:WINDOWS /DYNAMICBASE /NXCOMPAT /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

".\Debug\khtd.obj"

".\Debug\dreick.exe.embed.manifest.res"
]Erstellen der Befehlszeile "link.exe @"c:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\dreick\Debug\RSP00000527441540.rsp" /NOLOGO /ERRORREPORT:PROMPT" Ausgabefenster     Verknüpfen...
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) class tbMatrix __cdecl tbMatrixProjection(float,float,float,float)" (__imp_?tbMatrixProjection@@YA?AVtbMatrix@@MMMM@Z)" in Funktion "_WinMain@16".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) class tbMatrix __cdecl tbMatrixTranslation(class tbVector3 const &)" (__imp_?tbMatrixTranslation@@YA?AVtbMatrix@@ABVtbVector3@@@Z)" in Funktion "_WinMain@16".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: class tbColor & __thiscall tbColor::operator=(class tbColor const &)" (__imp_4tbColor@@QAEAAV0@ABV0@@Z)" in Funktion "_WinMain@16".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall tbColor::tbColor(float,float,float)" (__imp_0tbColor@@QAE@MMM@Z)" in Funktion "_WinMain@16".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: class tbVector3 & __thiscall tbVector3::operator=(class tbVector3 const &)" (__imp_4tbVector3@@QAEAAV0@ABV0@@Z)" in Funktion "_WinMain@16".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall tbVector3::tbVector3(float,float,float)" (__imp_0tbVector3@@QAE@MMM@Z)" in Funktion "_WinMain@16".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Direct3DCreate9@4" in Funktion ""void __cdecl initdx(void)" (?initdx@@YAXXZ)".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall tbColor::tbColor(void)" (__imp_0tbColor@@QAE@XZ)" in Funktion ""public: __thiscall SVertex::SVertex(void)" (0SVertex@@QAE@XZ)".
khtd.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall tbVector3::tbVector3(void)" (__imp_0tbVector3@@QAE@XZ)" in Funktion ""public: __thiscall SVertex::SVertex(void)" (0SVertex@@QAE@XZ)".
C:\Dokumente und Einstellungen\Martin Klein\Eigene Dateien\Visual Studio 2008\Projects\dreick\Debug\dreick.exe : fatal error LNK1120: 9 nicht aufgelöste externe Verweise.
 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 - 10 Fehler, 0 Warnung(en)
Was habe ich falsch gemacht. Ich weiß nicht mehr weiter.:confused:
Mein "verbesserter" Quellcode liegt im Anhang.
Anhang anzeigen quellcode.txt
 
Hi,

du musst die lib's noch deinem Projekt hinzufügen.

Am einfachsten geht das so:

C++:
#ifdef _DEBUG

//Alle Debug-Librarys linken
#pragma comment (lib, "TriBaseD.lib")
#pragma comment (lib, "D3D9D.lib")

#else

//Alle Release-Librarys linken
#pragma comment(lib, "TriBase.lib")
#pragma comment (lib, "D3D9.lib")

#endif
Das sollte als erstes in deinem Code stehen


Du kanst das ganze auch über ein Menü machen:
Rechtsklick auf dein Projekt -> Eigenschaften.
Links auf Konfiguration -> Linker -> Eingabe.
Und dann bei "Zusätzliche abhängigkeiten ale libs eintragen.
Bei dir sollte dann das da stehen:
TriBaseD.lib D3D9.lib

Aber Bitte:
Entscheide dich für eine möglichkeit nicht für beide ;)

Gruß Anfänger
 
Zuletzt bearbeitet von einem Moderator:
Habe deine Ratschläge befolgt. Nun lässt sich das Projekt erstellen. Vielen Dank.
ABER: Beim Starten kommt folgendes Nachrichtenfenster:
"Die Anwendung konnte nicht gestartet werden, weil TriBase.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben"
:confused:
 
Zurück