Процессорное время, использующее GetProcessTimes и FileTimeToSystemTime, не работает при 64-битном выигрыше - PullRequest
0 голосов
/ 18 июня 2010

Я пытаюсь измерить процессорное время.Он отлично работает на 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-битных окнах.
Есть линастройка, которую я должен установить для правильной связи?

Ответы [ 3 ]

2 голосов
/ 18 июня 2010

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

1 голос
/ 22 июня 2010

Проверьте флаги компоновщика. Вся конфигурация проекта для 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-битную платформу и скомпилировал. Я не изменил никаких настроек проекта.

0 голосов
/ 25 июня 2010

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

...