Время процессора процессора Использование GetProcessTimes и FileTimeTosystemTemte не работает в 64 бит

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

Вопрос

Я пытаюсь измерить время ЦП. Он отлично работает на Win 32, но на 64 бита, он говорит:

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

У него есть похожая ошибка для FileTimeToSystemTime

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

Сама функция не так важно, нет проблем с этим.
Это вызовы легают в 64 битной архитектуре или что?

Это не единственная проблема, похоже, что это не связано правильно, чтобы библиотеки на 64-разрядных окнах.
Есть ли настройка, которую я должен установить, чтобы это связать правильно?

Это было полезно?

Решение

Вы создаете настройки для двух сред, имеют те же перечисленные те же библиотеки импорта. Оба эти функции находятся в Kernel32.dll.

Другие советы

Проверьте флаги вашего линкера. Вся конфигурация проекта для 64-битных сборки отличается от 32-битных сборки. Поэтому проверьте настройки проекта, чтобы убедиться, что они оба ссылаются на одни и те же библиотеки.

Также убедитесь, что компилятор и линкер правильно вызваны, либо путем проверки панелей командной строки в настройках проекта или, осматривая журнал сборки.

Я просто попытался создать 64-битную сборку этого кода в Visual Studio 2010, и он работал нормально:

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

}

Я просто создал новый проект Win32, добавил 64-битную платформу и скомпилированную. Я не изменил никаких настроек проекта вообще.

Документация для GetProcessTimes и FileTimeToSystemTime покажет вам заголовки, которые включают, а файл библиотеки для ссылки на него. Тем не менее, Visual Studio обычно связывает для вас автоматически. Вы игнорируете библиотеки по умолчанию, возможно, в вашем проекте?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top