CPU tempo di processo utilizzando GetProcessTimes e FileTimeToSystemTime non funzionano in win 64 bit

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

Domanda

Sto cercando di misurare il tempo di CPU. E le grandi opere su Win 32, ma a 64 bit, che dice:

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

Ha errore simile per FileTimeToSystemTime

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

funzione in sé non è poi così importante non v'è alcun problema con esso.
Sono Ciò richiede legit in architettura a 64 bit o cosa?

Questo non è l'unico problema sembra che la sua non è che collega in modo corretto alle librerie a 64 bit di Windows.
C'è un'impostazione devo impostare per poter collegare correttamente?

È stato utile?

Soluzione

Do sei impostazioni di generazione per i due ambienti hanno le stesse librerie di importazione elencati. Entrambe queste funzioni sono in kernel32.dll.

Altri suggerimenti

Controlla le tue bandiere linker. L'intera configurazione progetto di 64 bit costruisce è diversa da quella di 32 bit costruisce. Così controllare le impostazioni del progetto per verificare che entrambi link per le stesse librerie.

Verificare inoltre che il compilatore e linker ottenuto richiamati correttamente, mediante il controllo dei riquadri della riga di comando di impostazioni di progetto, o controllando il log di compilazione.

Ho appena provato la creazione di un 64-bit build di questo codice in Visual Studio 2010, e ha funzionato bene:

#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);

}

Ho semplicemente creato un nuovo progetto Win32, ha aggiunto una piattaforma a 64-bit, e compilato. Non ho cambiato le impostazioni del progetto a tutti.

La documentazione per GetProcessTimes e FileTimeToSystemTime vi dirà le intestazioni includere e il file di libreria di collegamento pure. Tuttavia, Visual Studio di solito collegare quelli per voi automaticamente. Avete ignorare le librerie predefinite controllati forse nel vostro progetto?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top