El tiempo de procesamiento de la CPU utilizando GetProcessTimes y FileTimeToSystemTime no trabajar en la victoria de 64 bits

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

Pregunta

Estoy tratando de medir el tiempo de CPU. Funciona muy bien en Win 32, pero en 64 bits, que dice:

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

Tiene error similar para FileTimeToSystemTime

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

Función sí no es tan importante que no hay problema con él.
Son las llamadas esta fiar en la arquitectura de 64 bits o qué?

Este no es el único problema que parece que no es vincular correctamente a las bibliotecas de 64 bits de Windows.
¿Hay un ajuste que debería establecer para que interconectar adecuadamente?

¿Fue útil?

Solución

hará Estás configuración de generación para los dos ambientes tienen las mismas bibliotecas de importación mencionados. Ambas funciones son en kernel32.dll.

Otros consejos

Compruebe sus banderas de engarce. La configuración de todo el proyecto para 64-bit construye es diferente de la de 32-bit construye. A fin de comprobar la configuración del proyecto para verificar que ambos enlace a las mismas bibliotecas.

Compruebe también que el compilador y enlazador consiguieron invocarse correctamente, ya sea mediante la comprobación de los paneles de línea de comandos en la configuración del proyecto, o mediante la inspección del registro de generación.

he intentado crear una acumulación de 64 bits de este código en Visual Studio 2010, y funcionó bien:

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

}

Simplemente crea un nuevo proyecto Win32, añadido una plataforma de 64 bits, y compilado. No he cambiado alguna configuración del proyecto en absoluto.

La documentación para GetProcessTimes y FileTimeToSystemTime le dirá las cabeceras de incluir, y el archivo de biblioteca de enlace a también. Sin embargo, Visual Studio suele vincular los de forma automática. ¿Tiene ignoran bibliotecas predeterminadas comprueban tal vez en su proyecto?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top