第一、到MS下载中心下载最新的SDK,我下载的是Microsoft Windows SDK for Windows 7 and .NET Framework 4 (ISO),该页面有三个下载项,分别是X86、X64和Itanium三种,由于我使用的是X86,所以选择第一个ISO文件,下载,安装;
第二、配置开发环境,在SDK开发环境下有个文件叫ReleaseNotes,打开可以看如何配置开发环境,最简单的方式是打开「开始」菜单->程序->Microsoft Windows SDK v7.1->Visual Studio Registration->Windows SDK Configuration Tool,点击它,系统会为你配置好开发环境,其实,再次打开VS2005,你会发现其实只是增加了几个路径而已;
第三、在表面上,此时开发环境已经配置完成,但实际上仍然可能有问题,找个会用到SDK的开发工程,比如蓝牙开发,随便调用一个SDK提供的蓝牙接口函数,编写,编译,你会发现,你安装的SDK中的头文件竟然报错,你会发现有一部分头文件的生命竟然不起作用,打开那些头文件,竟然发现是由于#if (NTDDI_VERSION >= NTDDI_WINXPSP2)导致了编译器不再编译你需要的内容,寻找NTDDI_VERSION可以发现它的定义竟然比NTDDI_WINXPSP2小,理论上这是不应该的(NTDDI_VERSION应该是系统的版本号,我现在用的是winxpsp3啊),好了,我们不知道微软到底想怎么着,为了能编译通过,我们修改它的宏定义值使它通过,虽然修改这句也可以但以后可能其他的头文件也要改重复的语句,而最直接的就是改NNTDDI_VERSION的值,好,这时,SDK中的头文件不再报错了;
第四、重新编译程序,你会发现你本include了对应的头文件的,但是某些头文件中已经声明的标识符在你编写的源文件中竟然没有被正确识别,编译中出了问题,重新看文件中的预编译指令,最可疑的是这个“pragma comment ( lib, "Irprops.lib")”,它的用法,自己百度,将它注释掉,编译通过,连接出现问题,有些符号在编译时需要外部库的,在项目属性的附加依赖项中填入相应的LIB,再次编译;
第五,通过了吗?可能没有,提示"Fatal error LNK1103: debugging information corrupt",我这里提示是uuid.lib出的错,内事不决问百度,百度之,发现这是微软的兼容性问题,查看vs2005中的路径,你会发现win7 sdk的路径被置于最顶端,也就是说在连接时,是win7 sdk中的uuid.lib出了问题,改了它的名字,从vs2005的库文件中找到文件名相同的库文件拷贝到win7 sdk中对应的位置,再次编译,通过,Yes,它终于通过编译在XP下正常run了;
第六,结束了吗?把现在生成的程序拷贝到win7下,你会发现NO,它执行出错,说什么并行配置有问题,此时,你要先在win7下安装VS2005运行时环境Microsoft Visual C++ 2005 SP1 Redistributable Package,安装,运行;
第七,成功了吗?如果仍然出现这种上次的情况,那么打开VS2005,将活动平台改为release,然后修改项目的属性,在静态库中使用MFC,而不是使用共享的MFC库,好了重新在XP下编译,运行,没问题,拷贝到win7环境下,成功,恭喜你,你终于可以在XP系统下,利用vs2005为WIN7开发应用了。
折腾一下午,终于成功了,大计终于完成了一部分,下来要看系统的接口了。
文章评论(0条评论)
登录后参与讨论