我正在修改一个大型C ++项目,该项目的第一个版本仅限Windows 7,可用于Vista和XP。
主要工作是更改W7 API调用以在运行时使用GetProcAddress(以避免与其他平台上不可用的方法进行静态链接),所以我想知道是否有任何工具可以帮助确定需要更改哪些调用 - 希望通过检查C ++代码本身。
如果不这样做,最好尝试针对较旧的Windows SDK构建项目吗? - 例如:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6510
答案 0 :(得分:5)
#define WINVER 0x501
现在,比Windows XP更新的所有内容都会导致编译错误。
替换导致错误的所有内容,直到没有错误。
如果你有一些sed
- fu,你可以写一个直接找到windows标题中所有#if WINVER > 0x501
块的过滤器,但对我来说,这有点超出了我的范围: - )
答案 1 :(得分:2)
我会在WinXP和Vista下使用depends.exe工具(来自您的VS安装或来自here)打开您的二进制文件,以查看哪些功能在这些操作系统下无法静态链接。这些将是您的二进制文件正在使用的功能,但在旧版本的操作系统中缺少这些功能。你必须以某种方式处理它们:要么自己实现它们,要用别的东西替换它们,要么禁用你应用程序的某些功能。