使用GetProcesstimes和FileTimetosystemige的CPU流程时间不在64位赢
-
28-09-2019 - |
题
我正在尝试测量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通常会自动将其链接到您。您是否忽略了项目中检查的默认库?
不隶属于 StackOverflow