CPU Prozesszeit mit GetProcessTimes und FileTimeToSystemTime funktioniert nicht in 64-Bit-Sieg

StackOverflow https://stackoverflow.com/questions/3071652

Frage

Ich versuche, CPU-Zeit zu messen. Es funktioniert auf Win 32, aber auf 64 Bit, heißt es:

error LNK2019: unresolved external symbol __imp_GetProcessTimes referenced in function "unsigned int __cdecl getWINTime(void)" (?getWIN32Time@@YAIXZ) 

Es hat Ähnliche Fehler für FileTimeToSystemTime

error LNK2019: unresolved external symbol __imp_FileTimeToSystemTime referenced in function "unsigned int __cdecl getWINTime(void)" (?getWIN32Time@@YAIXZ)

Funktion selbst ist nicht so wichtig, es gibt kein Problem mit ihm.
Sind diese Anrufe legit in 64-Bit-Architektur, oder was?

Dies ist nicht das einzige Problem, wie es scheint, ist es nicht richtig zu Bibliotheken auf 64-Bit-Windows-Verknüpfung.
Gibt es eine Einstellung, die ich gesetzt sollte es richtig zu verknüpfen?

War es hilfreich?

Lösung

Möchten Sie sind Buildeinstellungen für die beiden Umgebungen die gleichen Importbibliotheken aufgelistet. Diese beiden Funktionen sind in kernel32.dll.

Andere Tipps

Überprüfen Sie die Linker-Flags. Die gesamte Projektkonfiguration für 64-Bit baut unterscheidet sich von derjenigen der 32-Bit-aufbaut. So Ihre Projekteinstellungen überprüfen, um sicherzustellen, dass sie beide Link auf die gleichen Bibliotheken.

Überprüfen Sie auch, dass der Compiler und Linker korrekt aufgerufen wurde, entweder durch die Command Line Scheiben in Projekteinstellungen überprüft oder durch das Buildprotokoll Inspektion.

Ich habe gerade versucht, ein 64-Bit-Build dieses Code in Visual Studio 2010 zu schaffen, und es funktionierte gut:

#include <Windows.h>

int CALLBACK WinMain(
  __in  HINSTANCE hInstance,
  __in  HINSTANCE hPrevInstance,
  __in  LPSTR lpCmdLine,
  __in  int nCmdShow
) {
  FILETIME ct;
  FILETIME et;
  FILETIME kt;
  FILETIME ut;
  GetProcessTimes(NULL, &ct, &et, &kt, &ut);

  SYSTEMTIME st;
  FileTimeToSystemTime(&ut, &st);

}

Ich habe einfach ein neues Win32-Projekt hinzugefügt, um eine 64-Bit-Plattform und zusammengestellt. Ich habe keine Projekteinstellungen überhaupt ändern.

Die Dokumentation für GetProcessTimes und FileTimeToSystemTime finden Sie die Header sagen zu schließen, und die Bibliotheksdatei Link als gut. Allerdings wird von Visual Studio in der Regel diejenigen, die in für Sie automatisch verknüpfen. Haben Sie ignorieren haben Standardbibliotheken geprüft vielleicht in Ihrem Projekt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top