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

NukeNoob

Frischling

  • »NukeNoob« ist der Autor dieses Themas

Beiträge: 48

Beruf: Student

  • Private Nachricht senden

1

06.11.2012, 12:56

[Erledigt] [C++] "timeGetTime()" + "while()" - Zeit messen

Hallo!
Ich habe gerade mit dem Buch "3D Spieleprogrammierung" anfgefangen und habe ein recht einfaches Programm basierend auf dem ersten Kapitel geschrieben. Ich poste das ganze in dieser Sektion, da es eigentlich ein Problem mit C++ an sich und nicht mit dem Buch oder der TriBaseEngine ist. Folgender 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
#include <iostream>
#include <Windows.h>

int main (void)
    {
    DWORD dwTime1, dwTime2;
    float fTime = 0.0f;
    int nVar = 0;

    std::cout << "Wert: ";
    std::cin >> fTime;

    while (fTime)
        {
        dwTime1 = timeGetTime();
        std::cout << "var: " << nVar << std::endl;
        nVar++;
        dwTime2 = timeGetTime();
        fTime -= (float)((dwTime2 - dwTime1)/1000.0f);
        }   
    }

Total simpel. Dieses Programm soll zu Anfang abfragen, wie lange eine Variable erhöht werden soll. Nach der Abfrage wird eine while-Schleife so lange ausgefürt, bis die eingebenene Zeit gleich null ist. Dazu messe ich wie im Beispiel im Buch zu Anfang der while-Schleife, sowie zu Ende die vergangene Zeit und ziehe die Differenz von der eingegebenen Zeit ab. Von der logik her sollte das Programm also funktionieren. Nur leider bekomme ich eine Fehlermeldung:

Zitat

1> Main.cpp
1>Main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__timeGetTime@0" in Funktion "_main".
1>C:\Users\Documents\Visual Studio 2012\Projects\Timer\Debug\Timer.exe : fatal error LNK1120: 1 nicht aufgelöste Externe

Ich verstehe nicht was ich falsch mache, die "Windows.h" ist ja included ... würde mich über eine schnelle Antwort und eventuell auch andere Möglichkeiten zur Realisierung von Timern freuen!

LG
NukeNoob

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NukeNoob« (06.11.2012, 15:21)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

06.11.2012, 12:58

Ein Include reicht nicht. Dem Linker muss die entsprechende lib ebenfalls übergeben werden.

Übrigens glaube ich nicht, dass Du mit der Ausgabe vieler Nullen mehrere tausend Mal pro Sekunde wirklich etwas anfangen kannst ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NukeNoob

Frischling

  • »NukeNoob« ist der Autor dieses Themas

Beiträge: 48

Beruf: Student

  • Private Nachricht senden

3

06.11.2012, 13:04

Hi BlueCobold,
Danke für die schnelle Antwort. Wie binde ich die "lib" ein?
Das Programm macht nicht viel Sinn, wollte nur testen ob das klappt. Und bei jedem Durchgang der while-Schleife wird die Variable doch erhöht?

LG

EDIT: #pragma comment (lib, "winmm.lib") - habs ;)

EDIT2: Und

C-/C++-Quelltext

1
while (fTime > 0)
muss es sein!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NukeNoob« (06.11.2012, 13:10)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

06.11.2012, 13:12

Ja, nVar wird erhöht, Zeile 19 zieht allerdings meist nur "0" ab.

Pragma kannst Du nutzen, empfehle ich aber nicht. Ich würde sie in den Linker-Einstellungen unter "Zusätzliche Bibliotheken" angeben.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NukeNoob

Frischling

  • »NukeNoob« ist der Autor dieses Themas

Beiträge: 48

Beruf: Student

  • Private Nachricht senden

5

06.11.2012, 13:33

Alles klar! Danke!

EDIT: Wie kann mein ein Thema als [Erledigt] markieren? Bzw. wo umbennen?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NukeNoob« (06.11.2012, 14:08)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

06.11.2012, 15:20

Deinen ersten Beitrag editieren.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NukeNoob

Frischling

  • »NukeNoob« ist der Autor dieses Themas

Beiträge: 48

Beruf: Student

  • Private Nachricht senden

7

06.11.2012, 15:22

Danke!

Werbeanzeige