وقت عملية وحدة المعالجة المركزية باستخدام GetProcessTimes و filetimetoSystemtime لا يعملون في الفوز 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