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

Hengstli

Treue Seele

  • »Hengstli« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Dettenheim

  • Private Nachricht senden

1

21.05.2006, 16:59

Problem mit Listing 1.11

Ich hab gerade versuchen wollen die Engine hoch und wieder herunterzufahren. Dazu entsprechend Meldungen auszugeben, aber ich bekomme immer nur Fehlermeldungen an den Kopf geworfen.

Programm:

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
// Tribase initialisieren

//

#include <iostream>
#include <TriBase.h>

using namespace std;

// Hauptprogramm

//

int main()
{
    // Engine hochfahren

    if (tbInit())
    {
        // Es trat ein Fehler auf!

        cout << "Engine konnte nicht richtig initialisiert werden!" << endl;
    }
    else
    {
        // Die Engine wurde korrekt initalisiert!

        cout << "Engine wurde intialisiert!" << endl;
    }

    // Die Engine wieder herunterfahren

    tbExit();

    return 0;
}


Fehlermeldungen:
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbExit(void)" (__imp_?tbExit@@YA?AW4tbResult@@XZ)" in Funktion "_main".

main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbInit(void)" (__imp_?tbInit@@YA?AW4tbResult@@XZ)" in Funktion "_main".

MSVCRTD.lib(crtexew.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup".

Sheddex

unregistriert

2

21.05.2006, 20:16

Statt "int main" folgendes:

C-/C++-Quelltext

1
2
int WINAPI WinMain (HINSTANCE Instance, HINSTANCE PrevInstance,
char* CommandLine, int ShowCommand)


Es handelt sich hier nämlich nicht um eine Konsole (steht auch im Buch!)

BTW: iostream und std kannst du weglasse.

Hengstli

Treue Seele

  • »Hengstli« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Dettenheim

  • Private Nachricht senden

3

21.05.2006, 20:35

Also ich habs jetzt so geschrieben:

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
// Tribase initialisieren

//

#include <TriBase.h>

// Hauptprogramm

//

int WINAPI WinMain (HINSTANCE Instance, HINSTANCE PrevInstance,
char* CommandLine, int ShowCommand) 
{
    // Engine hochfahren

    if (tbInit())
    {
        // Es trat ein Fehler auf!

        cout << "Engine konnte nicht richtig initialisiert werden!" << endl;
    }
    else
    {
        // Die Engine wurde korrekt initalisiert!

        cout << "Engine wurde intialisiert!" << endl;
    }

    // Die Engine wieder herunterfahren

    tbExit();

    return 0;
}


Trotzdem kommen immer noch die selben Fehler. Außerdem sagt der Compiler dass cout und endl nichtdeklariete Bezeichner wären.

Kann das vielleicht sein dass ich irgendwie noch was von der Tribase einbinden muss??

Anonymous

unregistriert

4

21.05.2006, 20:38

Oh man, Linker -> subsystem:windows

hast du auch die windows.h inkludiert? Man, warum ist das ne Übung oder hat

der jetzt einfach abgeschrieben???

MfG DarkRaider.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

21.05.2006, 20:40

zu cout und endl: da muss jetzt jeweils ein std:: davor. also

C-/C++-Quelltext

1
std::cout << "Text" << std::endl;

das mag erstmal schwer einzusehen sein, warum man das so schreibt statt einmal

C-/C++-Quelltext

1
using namespace std;

aber es ist besser und man gewöhnt sich dran ;)

Sheddex

unregistriert

6

21.05.2006, 20:43

Oh, ich habe übersehen dass du cout verwendest ;)
Aber: wohin soll der "cout-Text" denn? Falls du Heikos Buch hast: Am Anfang steht dort: "cout steht für console out"... und da du keine Konsole hast, kann es nicht funktionieren.

Ich sage jetzt zuviel, aber hier noch die Verwendung von Message Boxes:

C-/C++-Quelltext

1
MessageBox (NULL, "Text", "Überschrift", MB_OK);

dbGAMES

Treue Seele

Beiträge: 323

Wohnort: Frankfurt

Beruf: Student

  • Private Nachricht senden

7

21.05.2006, 20:53

Zitat von »"Hengstli"«

Kann das vielleicht sein dass ich irgendwie noch was von der Tribase einbinden muss??

hast du die TriBaseD.lib (Debug) und die TriBase.lib (Release) gelinkt?

Hengstli

Treue Seele

  • »Hengstli« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Dettenheim

  • Private Nachricht senden

8

21.05.2006, 21:02

Zitat

hast du die TriBaseD.lib (Debug) und die TriBase.lib (Release) gelinkt?


Ich hab nur das ganze Verzeichnis gelinkt. Also: \TriBase\Lib
In der Anleitung stand ja nix von einzeln verlinken. Oder versteh ich dich da falsch?

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

9

21.05.2006, 21:09

bei den projekt einstellungen muss das beim linker in die eingabe eingegeben werden.

was du da alles brauchst kannst du dir bei den beispiel programmen ansehen bei breakanoid oder bei galactica...
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

dbGAMES

Treue Seele

Beiträge: 323

Wohnort: Frankfurt

Beruf: Student

  • Private Nachricht senden

10

21.05.2006, 21:09

du musst zu jedem projekt welches die tribase engine verwendet unter "eigenschaften/linker/input/zusätzliche.../" tribase.lib hinzufügen

Werbeanzeige