我正在尝试测量CPU时间。它在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位Windows上的库。
我应该设置一个设置以使其正确链接吗?

有帮助吗?

解决方案

您是否构建两个环境的设置,上面列出了相同的导入库。这两个功能都在kernel32.dll中。

其他提示

检查您的链接标志。 64位构建的整个项目配置与32位构建不同。因此,请检查您的项目设置以验证它们是否链接到同一库。

另外,通过检查项目设置中的命令行窗格或检查构建日志,请检查编译器和链接器是否正确调用。

我刚刚尝试在Visual Studio 2010中创建此代码的64位构建,并且效果很好:

#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