0

我正在尝试测量 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 位窗口上的库。
我应该设置一个设置才能正确链接吗?

4

3 回答 3

2

Do you're build settings for the two environments have the same import libraries listed. Both of those functions are in kernel32.dll.

于 2010-06-18T17:09:02.150 回答
1

检查您的链接器标志。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 位平台,然后编译。我根本没有更改任何项目设置。

于 2010-06-22T10:56:23.067 回答
0

GetProcessTimes 和 FileTimeToSystemTime 的文档将告诉您要包​​含的标头以及要链接到的库文件。但是,Visual Studio 通常会自动为您链接这些内容。您是否在项目中检查了忽略默认库?

于 2010-06-24T20:38:29.047 回答