C++ Windows API 重写?

问题描述 投票:0回答:3

在VS9中,当我调用GetTickCount()函数时,它会在编译时自动将其转换为GetTickCount64()函数。第二个函数仅适用于 Vista+,因此我的程序在 XP 上运行时会出错。

我怎样才能“覆盖”这个,以便它调用原始的 GetTickCount() ?

谢谢

winapi
3个回答
3
投票

WINVER
设置为您要定位的 Windows 版本。或者可能是
_WIN32_WINNT
_WIN32_WINDOWS
。也许甚至全部...

查看 https://devblogs.microsoft.com/oldnewthing/20070411-00/?p=27283,了解有关小混乱版本宏的详细信息。

但是,我在 Windows SDK 中根本没有看到重新定义 - 我们的设置中是否还有其他东西正在执行重新定义(或者也许我错过了它......)?


0
投票

请记住,您不是为 Vista 或 Windows XP 编译应用程序,而是为 32 位或 64 位操作系统编译。如果您的应用程序需要支持除 64 位 Vista 之外的其他 Windows 版本,请在构建选项中指定为 32 位。


0
投票

我在 targetver.h 中设置了以下内容:

#define WINVER 0x0501 
#define _WIN32_WINNT 0x0501
#define _WIN32_WINDOWS 0x0501 

它仍然被重新定义。然而,当我创建一个简单的新项目来打印 GetTickCount() 时,即使我不必定义上述内容,它也可以在 XP 上正常工作。 我没有更改项目设置中的任何内容。有效和无效的示例 GetTickCount() 之间的唯一区别在于它周围有大量其他代码并使用它,但这些代码都不应该改变任何内容。

这可能是什么原因造成的?

编辑:我使用的其他文件之一是直接调用 GetTickCount64() ,我不知道这一点,所以我认为这是我自己的 GetTickCount() 函数。请忽略我上面写的

© www.soinside.com 2019 - 2024. All rights reserved.