在VS9中,当我调用GetTickCount()函数时,它会在编译时自动将其转换为GetTickCount64()函数。第二个功能仅适用于Vista +,因此在XP上运行时我的程序错误。
我如何'覆盖'这个以便它调用原始的GetTickCount()?
由于
答案 0 :(得分:3)
将WINVER
设置为您要定位的窗口版本。或者可能是_WIN32_WINNT
或_WIN32_WINDOWS
。也许甚至所有人......
请查看http://blogs.msdn.com/oldnewthing/archive/2007/04/11/2079137.aspx以获取有关该小型乱码版宏的详细信息。
但是,我在Windows SDK中根本没有看到重新定义 - 我们的设置中是否还有其他内容正在进行重新定义(或者我可能会错过它)?
答案 1 :(得分:0)
请记住,您没有编译Vista或Windows XP的应用程序,而是编译32位或64位操作系统。如果您的应用程序需要支持除64位Vista之外的其他Windows版本,请在构建选项中指定为32位。
答案 2 :(得分:0)
我在targetver.h中设置了以下内容:
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#define _WIN32_WINDOWS 0x0501
它仍然会被重新定义。但是,当我创建一个打印出GetTickCount()的简单新项目时,它在XP上工作正常,即使我不必定义上述内容。 我没有更改项目设置中的任何内容。有效的示例GetTickCount()和没有的示例GetTickCount()之间的唯一区别是它周围有很多其他代码并使用它,但是这些代码都不应该改变任何东西。
导致这种情况的原因是什么?
编辑:我使用的其他文件之一是直接调用GetTickCount64(),我不知道这个,所以我认为这是我自己的GetTickCount()函数。请忽略我上面写的内容