CPU tempo di processo utilizzando GetProcessTimes e FileTimeToSystemTime non funzionano in win 64 bit
-
28-09-2019 - |
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?
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?