Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

1

23.01.2010, 15:50

DXErr9.h fehlt

Hey,

ich habe grad versucht einen einfachen Code bei mir auf PC zu kompilieren, doch bekomme folgenden Fehler hier:

Quellcode

1
2
3
4
5
6
7
------ Erstellen gestartet: Projekt: Kapitel 1.4 Aufgabe 1, Konfiguration: Debug Win32 ------
Kompilieren...
main.cpp
c:\tribase engine\include\tribase.h(46) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "DXErr9.h": No such file or directory
Das Buildprotokoll wurde unter "file://c:\Users\Ilja\Documents\Projekte\Übungen 3D\Kapitel 1.4 Aufgabe 1\Kapitel 1.4 Aufgabe 1\Debug\BuildLog.htm" gespeichert.
Kapitel 1.4 Aufgabe 1 - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

TriBase.lib und TriBaseD.lib sind gelinkt!

Hier der Code nochmal:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
#include <TriBase.h>

using namespace std;

int main()
{
    tbInit();


    tbExit();
    
}


Ich habe herausgefunden, dass es wohl bei dem enuen SDK kein DXErr9.h/lib existiert sondern Dxerr.h/lib .
Dann habe ich versucht die tribase selber zu kompilieren und die Tribase eben an DXerr.h angepasst und Dxerr.lib eingetragen.Nun wenn ich auf kompilieren gehe, dann will es ne exe datei haben.WTF? :D

Was für ne datei will er den haben?Und könnte mir bitte einer sagen, wie ich den Fehler beheben könnte?

Habe die 3.Auflage von dem Buch und benutze VS c++ Express 2008!

Danke im Voraus.
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

23.01.2010, 16:04

Re: DXErr9.h fehlt

Zitat von »"Iljaronaldo"«

Nun wenn ich auf kompilieren gehe, dann will es ne exe datei haben.WTF? :D


Du gehst nicht auf kompilieren sondern drückst wohl auf den Play Knopf, d.h. startest den Debugger mit der dll. Um eine dll Debuggen zu können brauchst du natürlich eine exe die die dll verwendet und wenn du in den Debugeinstellungen keine angegeben hast fragt er dich nach einer.

Was du willst is nicht der Play Knopf sondern der Menüpunkt "Erstellen" oder alternativ einfach F7 Taste drücken ;)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

23.01.2010, 16:05

Schau mal hier:
https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=12449

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

4

23.01.2010, 16:23

Danke für eure schnellen Antworten.Nun das Erstellen war anscheinend auch garnicht nötig.Einfach nur die Zeilen ersetzen und speichern.

Danke nochmal.
Es kann losgehen :D
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

5

23.01.2010, 16:59

Noch ein kleines problem:

Bei Aufgabe 2 lautet die Aufgabenstellung: 2 Speicherbereiche reservieren und dann deren Inhalte vertauschen.Hier der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <Tribase.h>
#include <iostream>

using namespace std;

int main()
{
    //Engine initialisieren

    tbInit();
    //3 Speicherbereiche festelegen

    void *pSpeicher1 = tbMemAlloc(1000);
    void *pSpeicher2 = tbMemAlloc(1000);
    void *pPuffer = tbMemAlloc(1000);

    //Speicherbereich 1 und 2 mit zufälligen zahlen füllen und dann in void* konvertieren

    pSpeicher1 = (void*)tbIntRandom(0, 100);
    pSpeicher2 = (void*)tbIntRandom(100, 200);

    //Ausgabe der Werte


    cout<<"pSpeicher1(vor vertauschung): "<<pSpeicher1<<endl;
    cout<<"pSpeicher2(vor vertauschung): "<<pSpeicher2<<endl;

    //Vertauschen

    pPuffer = pSpeicher1;
    pSpeicher1 = pSpeicher2;
    pSpeicher2 = pPuffer;

    //Ausgabe nach Vertauschung

    cout<<"pSpeicher1(nach vertauschung): "<<pSpeicher1<<endl;
    cout<<"pSpeicher2(nach vertauschung): "<<pSpeicher2<<endl;
    

    //Speicherbereiche freigeben

    TB_SAFE_MEMFREE(pSpeicher1);   
    TB_SAFE_MEMFREE(pSpeicher2);  
    TB_SAFE_MEMFREE(pPuffer);  

    //Engine herunterfahren

    tbExit();


Nun es kompiliert auch fehlerfrei und ohne Warnungen.
Wenn ich das programm starte macht es auch das was es soll, an der Ausgabe zu sehen!

Jedoch kommt dann immer diese meldung von Windows, dass es nciht mehr richtig ausgeführt wird und dann halt unten "Programm beenden".

Ich habe mir mal die Log angesehen, dort wird nur was von der Initialisierung der Engine mitgelogt und sonst keinerlei Infos.Nichtmal das herunterfahren dokumentiert.
Und dabei soll es doch alles mitschreiben wie z.B. das Anlegen der neuen Speicherbereiche?

Woran liegt das?Ich habe wie man sieht auch selbst die Bereiche freigegeben aber was bringen tut es nicht.
Vllt. wird an einer falschen Stelle geschrieben.
und noch als kleiner Tipp, der fehler kommt auch schon vor vertauschung der Inhalte ;)

Danke.[/cpp]

Edit:

Hier ein Screen:


(Link)
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

6

01.02.2010, 14:06

Naja ich bin mir zwar nicht so ganz sicher wo das Problem ist, aber da das Log nicht weiter geht wird das Programm wohl tbExit() abschmieren:

EIn paar Gedanken. Du möchtest doch die Speicherbereiche mit int-Werten füllen (im Buch 1000 Stück) Dafür reservierst du zu wneig Speicher, weil du 1000 int Werte die jeweils 4 Byte groß sind speichern willst. Sprich es heißt: tbMemAlloc (4000). Dann solltest du lieber schreiben:

C-/C++-Quelltext

1
int *pSpeicher1 = (int*) (tbMemAlloc(4000))
Der Speicherbereich soll ja int Werte und nicht void speichern (obwohl ich nicht sicher bin ob es nicht auch so gut, wie du es gemacht hast).

Außerdem füllst du den Speicherberich mit nur einer einzigen int Zahl.

C-/C++-Quelltext

1
pSpeicher1 = (void*)tbIntRandom(0, 100); 


Wenn du den Speicherberich vorher in int castest, dann entfällt das

C-/C++-Quelltext

1
(void*)


Da du 1000 Werte füllen möchtest brauchst du eine for Schleife, die an dem Speicherort jeweils einen Wer reinschriebt. Wie das geht darfst du ausprobieren^^
Errare humanum est.. leider oder zum Glück?

Werbeanzeige