我正在尝试测量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位窗口上的库的问题 我应该设置一个设置才能正确链接吗?
答案 0 :(得分:2)
您是否为两个环境的构建设置列出了相同的导入库。这两个函数都在kernel32.dll中。
答案 1 :(得分: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位平台并进行了编译。我根本没有改变任何项目设置。
答案 2 :(得分:0)
GetProcessTimes和FileTimeToSystemTime的文档将告诉您要包含的标头,以及要链接的库文件。但是,Visual Studio通常会自动为您链接。 您是否忽略了项目中可能检查的默认库?