Время процессора процессора Использование GetProcessTimes и FileTimeTosystemTemte не работает в 64 бит
-
28-09-2019 - |
Вопрос
Я пытаюсь измерить время ЦП. Он отлично работает на 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 обычно связывает для вас автоматически. Вы игнорируете библиотеки по умолчанию, возможно, в вашем проекте?