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

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

1

26.06.2009, 13:21

Problem mit C++

Hi,
ich hab ein Problem mit Visual C++ 2008, welches ich ehrlichgesagt nicht kapiere. Die Fehlermeldung:

Zitat

1>c:\dokumente und einstellungen\blablabla\eigene dateien\visual studio 2008\projects\breakout2\breakout2\main.cpp(47) : warning C4018: '<': Konflikt zwischen 'signed' und 'unsigned'
1>Verknüpfen...
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl decrypt(char const *)" (?decrypt@@YAXPBD@Z)" in Funktion "_main".
1>C:\Dokumente und Einstellungen\blablalba\Eigene Dateien\Visual Studio 2008\Projects\breakout2\Debug\breakout2.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

Und 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <cstring>
using namespace std;


struct ball {
    int x,y;
};


void decrypt (const char* dc);
void game ();


int main() {
    char credit[] = "010009009072097108108111";
    char ent;
    do {
        cout << "Was möchtest du machen?\n[S]piel beginnen, [C]redits, [B]eenden?\n";
        cin >> ent;
        switch(ent) {
            case 98:
            case 66:
                exit(1);
            break;
            case 67:
            case 99:
                decrypt(credit);
                cin.get();
            break;
            case 83:
            case 115:
                game();
            break;
            default:
                exit(1);
            break;
        }
    } while ((ent != 115) && (ent != 83) && (ent != 99) && (ent != 67));
}




void decrypt(char* dc) {        // Aufwendiges Entschlüsslungsprogramm

    char buchstabe;
    for (int i = 0; i < (strlen(dc) / 3) + 1; i++) {    // Der rot markierte Fehler

        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 5; k++) {
                for (int l = 0; l < 5; l++) {
                    if ((dc[i*3] = j) && (dc[i*3+1] = k) && (dc[i*3+2] = l)) {
                        buchstabe = ((j * 100) + (k * 10) + (l));
                        cout << buchstabe;
                    }
                }
            }
        }
    }
}

void game() {
    exit(1);
}


Das Spiel ist ersteinmal reine Nebensache. Ich wollt als erstes ein Geheimcode machen (ich weiß, ich weiß ... man kann ihn leicht entschlüsseln), den ich dann entschlüssel, damit nicht jeder so leicht was rein schreiben kann, wie er möchte. Jetzt sind aber 2 so komische Fehler da. :roll:
MfG

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

26.06.2009, 13:28

C-/C++-Quelltext

1
void decrypt (const char* dc); 


...

C-/C++-Quelltext

1
void decrypt(char* dc) {        // Aufwendiges Entschlüsslungsprogramm 


Fällt dir n Unterschied auf? ;)

Kleine Anmerkung: In C++ sollte man exit() vermeiden da es das Programm einfach killt und der Stack nicht aufgeräumt wird...

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

3

26.06.2009, 14:40

Oh^^
Naja, aber welchen Befehl würdest du denn vor exit(1); bevorzugen?

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

26.06.2009, 14:44

Ich seh da keine Fehlermeldung. Nur eine Compilerwarnung die dir klar sagt, dass du einen signed mit einem unsigned wert vergleicht.

strlen liefert nunmal einen Wert ohne Vorzeichen. Ein String kann nunmal nicht -2 Zeichen lang sein.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

26.06.2009, 14:46

Zitat von »"Duji-Buji"«

Naja, aber welchen Befehl würdest du denn vor exit(1); bevorzugen?


wie wärs mit return? ;)

Zitat von »"Sylence"«

Ich seh da keine Fehlermeldung. Nur eine Compilerwarnung die dir klar sagt, dass du einen signed mit einem unsigned wert vergleicht.

Zitat von »"MSVC"«

error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl decrypt(char const *)" (?decrypt@@YAXPBD@Z)" in Funktion "_main".

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

26.06.2009, 18:26

omg...
War verdammt warm im Büro... :oops:

goldfisch007

Alter Hase

Beiträge: 446

Wohnort: Süden von Berlin

  • Private Nachricht senden

7

26.06.2009, 23:09

C-/C++-Quelltext

1
2
3
4
5
6
int main()
{

  game();
  return 0;
}
Wir bauen auf und reißen nieder, so ham wir Arbeit ima wieder...
--------------------
http://www.piratenpartei.de/tmp/images/Slogans_5_0.png
--------------------
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender, geklaut von Helmut xD)

Werbeanzeige