用于确定C ++代码使用的Win32 API版本的工具?

时间:2011-07-07 16:21:08

标签: c++ winapi api version

我正在修改一个大型C ++项目,该项目的第一个版本仅限Windows 7,可用于Vista和XP。

主要工作是更改W7 API调用以在运行时使用GetProcAddress(以避免与其他平台上不可用的方法进行静态链接),所以我想知道是否有任何工具可以帮助确定需要更改哪些调用 - 希望通过检查C ++代码本身。

如果不这样做,最好尝试针对较旧的Windows SDK构建项目吗? - 例如:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6510

2 个答案:

答案 0 :(得分:5)

#define WINVER 0x501

现在,比Windows XP更新的所有内容都会导致编译错误。

替换导致错误的所有内容,直到没有错误。

如果你有一些sed - fu,你可以写一个直接找到windows标题中所有#if WINVER > 0x501块的过滤器,但对我来说,这有点超出了我的范围: - )

答案 1 :(得分:2)

我会在WinXP和Vista下使用depends.exe工具(来自您的VS安装或来自here)打开您的二进制文件,以查看哪些功能在这些操作系统下无法静态链接。这些将是您的二进制文件正在使用的功能,但在旧版本的操作系统中缺少这些功能。你必须以某种方式处理它们:要么自己实现它们,要用别的东西替换它们,要么禁用你应用程序的某些功能。