Du bist nicht angemeldet.

Werbeanzeige

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

1

28.01.2013, 22:09

Problem beim erstellen neuer Projektmappen und Linken von DirectX

Hi Leute

ich habe ei Problem.
Undzwar sitze ich nun Runde 5 Stunden vorm Rechner und bin am verzweifeln.
Ich bin Momentan im Kapittel 2 und habe gerade den Abschnitt des ersten Dreiecks gelesen.

Nun wollte ich das ganze nachprogrammieren, bekomme jedoch Fehlermeldungen.

Ich habe die datei außerhalb der Projektmappe aus dem Buch erstellt und alles gelinkt wie es sich gehört.
Dann bekam ich Fehlermeldungen, dass p_gD3DDEVICE9 nicht definiert ist.
Habe auch schnell herraus gefunden woran das liet und zwar daran, dass im neuen SDK die 9 dahinter weg muss.
Der Fehler trat jedoch in der Tribase.h auf.
Also habe ich die TribaseEngine aus der aktualisierten Version erstellt.
Das hatte zur folge, dass ich ca 15 fehlermeldungen dass mir datein fehlen.

Also habe ich visual studio und directx Sdk runtergehauen und neu Installiert.
Die directX libs und includes in den include und lib ordner von visual studio getan.

Klapt auch nicht.

Danach nochmal alles runter und schritt für schritt das getan was in der PDF datei der aktualisierten CD stand.
Auch dies ohne großen erfolg.

Könnte mir jemand schritt für schritt erklären was ich tun muss, damit das endlich läuft?
Ich möchte endlich Programmieren :(

Bitte um eure Hilfe.

Mit freundlichen Grüßen
xXSlayerXx
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

2

28.01.2013, 22:37

Ich habe die datei außerhalb der Projektmappe aus dem Buch erstellt und alles gelinkt wie es sich gehört.
Dann bekam ich Fehlermeldungen, dass p_gD3DDEVICE9 nicht definiert ist.

Das hört sich nach einer Variable von dir an. Der Linkerfehler besagt, dass du behauptest, sie würde existieren, sie das aber nicht tut. Da es eine von dir ist, nützt SDK installieren überhaupt nichts.
Wo kommt in deinem Code p_gD3DDEVICE9 vor? Typisch wäre, dass du die Variable in einem Header mit extern deklarierst, und sie dann in irgendeiner Sourcedatei ohne extern definierst. Wenn du Punkt 2 nicht machst, die Datei nicht kompiliert wird, oder du dich bei Deklaration oder Definition vertippt hast, würde der Fehler kommen.
Such mal nach p_gD3DDEVICE9 und zeig uns, wo das im Code auftaucht.
Lieber dumm fragen, als dumm bleiben!

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

3

28.01.2013, 22:39

kann ich leider erst morgen nach der arbeit machen.

Melde mich dann.

Edit:
Doch hatte noch zeit.
Das ganze tritt beim erstellen der Renderstates auf.
Hier der Code abschnitt.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tbResult InitScene() 
{
HRESULT hResult;

if(FAILED(hResult = g_pD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE))) 
{
TB_ERROR_DIRECTX("g_pD3DDevice->SetFVF“, hResult, TB_ERROR);
}

g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); 
g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); 
g_pD3DDevice->SetRenderState(D3DRS_DITHERENABLE, TRUE);
return TB_OK; 
}
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »xXSlayerXx« (28.01.2013, 22:45)


4

28.01.2013, 22:58

Zur Wiederholung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
void fun(int x); //Funktionsdeklaration
extern int Counter; //Variablendeklaration

void fun(int x) //Funktionsdefinition
{
 //blub;
}
int Counter=0; //Variablendeklaration (Zuweisung ist optional)

Wenn du einen Linkerfehler hast, muss die Variable irgendwo deklariert aber nicht definiert sein. Versuch mal diese Deklaration zu finden und poste sie hier.

Du kannst auch ruhig die genaue Fehlermeldung mal posten. Bei den 15 Stück würde es reichen 2-3 exemplarische zu posten. Wichtig ist hier erstmal alles, was mit g_pD3DDevice zu tun hat.
Lieber dumm fragen, als dumm bleiben!

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

5

29.01.2013, 12:55

ich glaube ich weiß woher der Fehler kommt.
Undzwar denke ich, dass ich i Projekt noch die Falsche TriBase Engine (also die alte Version) helinkt habe un die neue DirectX Version nutze.
Ich werde nachher zuhause mal einen neuen Sauberen Ordner mit der Tribase engine im System anlegen und diesen dann Linken.

Ich denke ich sollte mir ein "Vorlage Programm" erstellen, welches ich immer wieder nutzen kann.

Melde mich sobald ich neues weiß.
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

6

29.01.2013, 18:17

So habe alles gelinkt wie es sich gehört, doch bekomme nun folgende Fehlermeldungen:

Fehler 1 error C1083: Datei (Include) kann nicht geöffnet werden: "DXErr9.h": No such file or directory C:\Programmierung\TriBase\include\TriBase.h 46
2 IntelliSense: Kein Klassen- oder Strukturname. c:\programmierung\tribase\include\tbvideo.h 29
3 IntelliSense: Der Bezeichner ""CMediaType"" ist nicht definiert. c:\programmierung\tribase\include\tbvideo.h 45
4 IntelliSense: Der Bezeichner ""CMediaType"" ist nicht definiert. c:\programmierung\tribase\include\tbvideo.h 46
5 IntelliSense: Der Bezeichner ""CMemReader"" ist nicht definiert. c:\programmierung\tribase\include\tbvideo.h 73
6 IntelliSense: Der Bezeichner ""CMemStream"" ist nicht definiert. c:\programmierung\tribase\include\tbvideo.h 74
7 IntelliSense: Die Datei "Quelle" kann nicht geöffnet werden: "streams.h". c:\programmierung\tribase\include\tribase.h 47
8 IntelliSense: Die Datei "Quelle" kann nicht geöffnet werden: "asyncio.h". c:\programmierung\tribase\include\tribase.h 48
9 IntelliSense: Die Datei "Quelle" kann nicht geöffnet werden: "asyncrdr.h". c:\programmierung\tribase\include\tribase.h 49
10 IntelliSense: Die Datei "Quelle" kann nicht geöffnet werden: "memfile.h". c:\programmierung\tribase\include\tribase.h 50


Anscheinend fehlen ihm Datein.
Die Fehler treten sowohl bei der TriBase Version der CD also auch vom Download auf.
Ich bin wie folgt vorgegangen:

Neuen Ordner mit der TriBase Engine erstellt.
Verzeichnis:
c:\programmierung\tribase

dann habe ich ein Projekt erstellt.
Weiter auf Projekteigenschaften und dann dort in die VC++Verzeichnisse die aufenthaltsorder der Include und Lib datein angegeben.
Danach bin ich die anleitung aus der "Lies mich" datei des Downloads durchgegangen und habe Schritt für Schritt das getan was dort stand.

Dies jedoch auch ohne Erfolg.
Der TestCode den ich dafür benutzt habe sieht wie folgt aus:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <TriBase.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCommandLine, int iShowCommand)
{
    if (tbInit())
    {
        return (0);
    }
    else
    {
        char *var = "Hallo. Dies ist ein test.";
        tbWriteToLog(var);

        tbExit();
    }

return 0;
}



Kann mir einer sagen was ich Falsch mache? :(
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »xXSlayerXx« (29.01.2013, 19:05)


xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

7

29.01.2013, 20:03

so ich habe nun alles einmal runtergehauen um von anfang an alles zu installieren und die libs zu erstellen.

Ich downloade nun das directX SDK 2010. Danach werde ich mir das ganze in den ordner C:Programmierung kopieren.
Danach downloade ich mir die aktualisierte CD Version.

Dann downloade ich das Windows Server 2003 SDK.
nachdem dies installiert ist, erstelle ich ein Win 32 Projekt.

So was muss ich nun genau tun?
Kann mir das bitte einer sagen???

Ich habe schon wieder 5 stunden versaut
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

dot

Supermoderator

Beiträge: 9 846

Wohnort: Graz

  • Private Nachricht senden

8

29.01.2013, 20:18

Wofür genau das Windows Server 2003 SDK?

Hol dir Visual Studio 2010, das DirectX June 2010 SDK und das Update für die Projektdateien und fertig.

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

9

29.01.2013, 20:55

so ich habe nun alles genau so gemacht wie es in der Lies mich datei stand.
schritt für schritt.

Nun kommt aber nachdem ich die gesamte Projektmappe kompiliert habe und ein Projekt angelegt habe, dass ich genau wie beschrieben angelegt hab, folgender Fehler:

Das Programm "C:\Programmierung\3D-Spieleprogrammierung-Update\TriBase\Bin\TriBaseD.dll" kann nicht gestartet werden.
was läuft da Falsch?

die dll ist in diesem Verzeichnis.
Gleiches geschieht auch wenn ich als Release kompilieren will.
Bitte um schnelle antwort
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

dot

Supermoderator

Beiträge: 9 846

Wohnort: Graz

  • Private Nachricht senden

10

29.01.2013, 21:05

Du versuchst offenbar die TriBase.dll zu starten, was keinen Sinn macht. Eine dll ist eine Bibliothek und keine lauffähige Anwendung.

Werbeanzeige