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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

51

19.04.2008, 20:54

C-/C++-Quelltext

1
2
3
4
5
6
7
8
#ifdef DLL_EXPORTS
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif   // das #endif gehört da hin


void DLL Punkte ();
bool DLL HighscoreEintragen (int punkte);


und patch.h musst du natürlich auch inkludieren

52

19.04.2008, 20:55

Habe ich auch gemacht!

Jetzt erscheinen folgende Meldungen:

Quellcode

1
2
c:\dokumente und einstellungen\lukas.hexenmeister\desktop\schiffe versenken patch\patch.cpp(13) : error C2491: 'Punkte' : Definition von Funktion fuer dllimport nicht erlaubt
c:\dokumente und einstellungen\lukas.hexenmeister\desktop\schiffe versenken patch\patch.cpp(30) : error C2491: 'HighscoreEintragen' : Definition von Funktion fuer dllimport nicht erlaubt
void CreateComputerGame (int Quality);

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

53

19.04.2008, 20:59

zeig mal wie der code jetzt aussieht...

54

19.04.2008, 21:04

Patch.h:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
#ifdef DLL_EXPORTS
#define DLL __declspec(dllexport)
#else
#define DLL __declspec(dllimport)
#endif

void DLL Punkte (DWORD dwTime1, int Treffer, int gTreffer);
bool DLL HighscoreEintragen (int punkte);


Patch.cpp:

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
#include <windows.h>
#include <iostream.h>
#include <fstream.h>
#include "Patch.h"


int WINAPI DllMain(HINSTANCE handle, DWORD reason, LPVOID reserved)
{
  return 1;
}

void DLL Punkte (DWORD dwTime1, int Treffer, int gTreffer)
{
     int Faktor;
     DWORD dwTime2 = timeGetTime();
     float ftime = (float) (dwTime2 - dwTime1) / 1000;
     if (Treffer == 17) cout << "Sie haben Gewonnen!"<< endl;
     else cout << "Der Computer hat gewonnen!" << endl;
     if (gTreffer < 11) Faktor = 3500;
     else Faktor = 5000;
     int punkte = static_cast <int> (Treffer * Faktor) / ((ftime + gTreffer) / 13);
     cout << "Ihre Punkte: " << punkte << endl;
     cout << "Ihre Punkte: " << punkte << endl;
     bool High = HighscoreEintragen (punkte);
     if (High == true) cout << "Neuer Highscore!\n\n\n";
     else cout << "Leider kein Neuer Highscore!\n\n\n";
}

bool DLL HighscoreEintragen (int punkte)
{
    int Vergleich = 0;
    ifstream Input ("Highscore.svhd", ios::binary);
    Input.read ((char*) &Vergleich, sizeof (Vergleich));
    Input.close();
    if (Vergleich < punkte) {
    ofstream Output ("Highscore.svhd", ios::binary);
    Output.write ((char*) &punkte, sizeof (punkte));
    Output.close();
    return true;
    }
    else return false;
}
void CreateComputerGame (int Quality);

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

55

19.04.2008, 21:16

1) verwendest du noch vc 6?
denn ansonsten ist das

C-/C++-Quelltext

1
2
#include <iostream.h>
#include <fstream.h> 


schonmal falsch. es muss

C-/C++-Quelltext

1
2
#include <iostream>
#include <fstream>


heißen.

2) DllMain sollte eigentlich einen BOOL zurückgeben

3) dinge wie cout, endl oder ifstream liegen eigentlich im namespace std.
entweder eine using deklaration/direktive verwenden oder einfach std::cout etc. machen.

4) kommt auch wirklich immer noch der fehler von oben (is für mich irgendwie schwer vorstellbar)...

5) das makro DLL_EXPORTS ist auch wirklich definiert beim kompillieren der dll (heißt dein projekt denn auch wirklich "dll")!?

56

19.04.2008, 21:23

Ich verwende noch vc 6.
Nun gibt DllMain auch einen BOOL zurück.
Neuer Fehler:

Quellcode

1
c:\dokumente und einstellungen\lukas.hexenmeister\desktop\schiffe versenken patch\patch.cpp(6) : error C2871: 'std' : Existiert nicht oder ist kein Namespace
bei using namespace std.
Mein Projekt heißt auch wirklich dll.
void CreateComputerGame (int Quality);

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

57

19.04.2008, 21:25

jo, wenn du vc6 verwendest dann kannst du normal bei iostream.h bleiben ohne den namespace std zu verwenden. vc6 is eben etwas veraltet und kein standard c++...

58

19.04.2008, 21:27

Wie kann mann überhaupt std:: bei input und output verwenden?
void CreateComputerGame (int Quality);

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

59

19.04.2008, 21:28

wie ich seh hast du die fehlermeldungen oben editiert :p

die meldungen da deuten drauf hin, dass DLL_EXPORTS doch nicht so definiert ist wie man vielleicht glauben möchte...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

60

19.04.2008, 21:28

Zitat von »"Altair"«

Wie kann mann überhaupt std:: bei input und output verwenden?


C-/C++-Quelltext

1
2
std::ifstream Input("Highscore.svhd", std::ios::binary);
std::ofstream Output("Highscore.svhd", std::ios::binary);

Werbeanzeige