通过Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等编译器进行项目编译
本文内容中的部分资料和知识来源于网络,具体引用出处不明.
VS的IDE从VC6到VS2010的变化可谓是天翻地覆,最新的VS2010有一个特性就是支持多显示器开发,这无疑为我们的开发带来很大的便利.
VC的各种版本也都有它自己的特点,像VC6就以速度快著称.
随着操作系统的不断进化,即使是开发人员对新系统的华丽界面也有所动心.我就是 哈哈.
Win7正式发布以来 一直没太关注,因为之前尝试过Vista,被各种挫折打败了.去年开始才算正式踏上了使用Win7的路程
结果 Win7还是挺好用的.不知道Win8正式版发布以后会不会更好用.
系统更新换代对应的软件和各种工具当然最好是跟上脚步,这样才算完美.
手里有一份游戏代码挺大的,不过是VC7.1的工程,一直想以各种手段转换为VS2008甚至VS2010的,均已各种莫名其妙的bug乱弹告终.
可带着多台显示器做开发,没有发挥最大用处感觉太浪费了.
上段时间又把VS2008安装目录里的include lib都替换成VC7.1的尝试编译.结果首先就cl.exe报错.原因是VS2008的响应文件默认是unicode格式.
改成ansi的后基本不报错了,但是编译的时候cl.exe经常会出现假死.原因可能就是部分参数或者响应文件里的部分内容无法被正确识别导致的.
于是再次放弃.
这几天又开始研究Qt这个开源的GUI库(这么说有点委屈Qt了,其实Qt不仅仅是一个强大的GUI库而已,里面还有好多好多值得学习的东西,比如信号/槽模式)
Qt用VS2008 然后那份代码继续用VS2003 越来越觉得VS2003那IDE界面太老土了.而且拖动子窗口的时候会变得很卡.
于是又去搜寻解决方案,经过坚持不懈的努力,终于在被GFW墙了无数次之后找到了一篇文章.(其实怪自己不细心,若早点想到VS2010为什么要提供一个"平台工具集"选项就早找到资料了)
跑题太远了,进入正题:
VS2010是支持使用不同版本的VC进行编译的.只是没太多人研究而已.
首先从http://daffodil.codeplex.com/ 下载支持工具进行安装(开源项目,有兴趣可自行研究).
安装完后会在VS2010项目属性的"平台工具集"子项那看到不再是只有之前的v90和v100了,里面出现了从v60 v70 v71 v80 就是对应的vc6 vc7 vc7.1 vc8了
当然如果你系统里已经装过了这些版本,那直接就可以用了,不用任何额外设置.
下面的情况是针对系统只装了vs2010的机器
"平台工具集"每个版本都需要有各自的include lib等文件,默认是从注册表中进行读取
这些文件就在已装VS版本主目录下的VC目录里.比如include crt atlmfc lib这些文件夹,可以去别电脑里拷贝过来
另外,编译时还需要指定版本的bin文件,比如cl.exe link.exe,其中cl.exe还会需要合适的mspdb*.dll(*为特定版本号)等文件
所以还要去Common7目录下的IDE目录里去找这些文件.
总之,每个版本有自己的include lib等文件的同时还要保证编译器 链接器等能正常运行就可以了.
这些文件都找齐后,接下来就是修改注册表能让VS2010找到我们的文件在哪.
注册表路径可以参考C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets下面的v** (版本号)目录里的Microsoft.Cpp.Win32.v**.props文件
该文件就是对VS2010中用到的几个环境变量进行赋值等操作.常用的有
$(VSInstallDir) ----VS安装目录(某些dll需要用到)
$(VCInstallDir) ----VC安装目录(include lib文件等)
$(ExecutablePath) ----可执行工具目录(cl link等)
以VC7.1为例
<PlatformToolsetVersion>71</PlatformToolsetVersion>
<VCInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VC@ProductDir)</VCInstallDir>
<VCInstallDir Condition="'$(VCInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\7.1\Setup\VC@ProductDir)</VCInstallDir>
<VCInstallDir Condition="'$(VCInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\7.1\Setup\VC@ProductDir)</VCInstallDir>
<VCInstallDir Condition="'$(VCInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCExpress\7.1\Setup\VC@ProductDir)</VCInstallDir>
<VSInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VS@ProductDir)</VSInstallDir>
<VSInstallDir Condition="'$(VSInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\7.1\Setup\VS@ProductDir)</VSInstallDir>
<VSInstallDir Condition="'$(VSInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\7.1\Setup\VS@ProductDir)</VSInstallDir>
<VSInstallDir Condition="'$(VSInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCExpress\7.1\Setup\VS@ProductDir)</VSInstallDir>
<WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$(VCInstallDir)PlatformSDK\</WindowsSdkDir>
<FrameworkDir Condition="'$(UseEnv)' != 'true'">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework@InstallRoot)</FrameworkDir>
<FrameworkDir Condition="'$(FrameworkDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework@InstallRoot)</FrameworkDir>
<FrameworkSdkDir Condition="'$(UseEnv)' != 'true'">$(VSInstallDir)SDK\v1.1\</FrameworkSdkDir>
<FrameworkVersion Condition="'$(UseEnv)' != 'true'">v1.1.4322.573</FrameworkVersion>
<ExecutablePath Condition="'$(ExecutablePath)' == ''">$(VCInstallDir)bin;$(VCInstallDir)PlatformSDK\bin;$(VCInstallDir)PlatformSDK\common\bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(FrameworkSDKDir)bin;$(FrameworkDir)$(FrameworkVersion);$(VSInstallDir);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH);</ExecutablePath>
<IncludePath Condition="'$(IncludePath)' == ''">$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(VCInstallDir)PlatformSDK\include;$(VCInstallDir)PlatformSDK\common\include;$(FrameworkSDKDir)include;</IncludePath>
<ReferencePath Condition="'$(ReferencePath)' == ''">$(FrameworkDir)$(FrameworkVersion);$(VCInstallDir)atlmfc\lib;</ReferencePath>
<LibraryPath Condition="'$(LibraryPath)' == ''">$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(VCInstallDir)atlmfc\lib\i386;$(VCInstallDir)PlatformSDK\lib;$(VCInstallDir)PlatformSDK\common\lib;$(FrameworkSDKDir)lib;$(VSInstallDir);$(VSInstallDir)lib;</LibraryPath>
<SourcePath Condition="'$(SourcePath)' == ''">$(VCInstallDir)atlmfc\src\mfc;$(VCInstallDir)atlmfc\src\atl;$(VCInstallDir)crt\src;</SourcePath>
绿色粗体部分就是该版本所需要的各种文件的路径,注意路径必须以"\"结尾.
$(VSInstallDir) 是从 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VS 里读取ProductDir的值
$(VCInstallDir) 是从 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VC 里读取ProductDir的值
$(ExecutablePath) 是根据上面的两个环境变量去设置,里面有 $(VSInstallDir)Common7\ide 说明有可能会用到里面的dll或者exe等可执行文件(实验中此处是用到了ide里的mspdb80.dll).
这文件是xml格式的语法没详细研究的,但不难看出 <VCInstallDir Condition="'$(VCInstallDir)' == ''">*</VCInstallDir> 这一句应该是$(VCInstallDir)这个环境变量为空时才会设置$(VCInstallDir)的值(避免覆盖已有设置)
这样就把注册表里加上我们需要的路径就可以了.不推荐直接修改本文件,不知道为啥不推荐.....
我把VC6 VC7.1和VC9的平台工具集打包一下上传了,还附带写了个注册表脚本可以视情况修改导入.
之所以不制作VC7.0和VC8的工具集,1是电脑上没装,2是感觉这三个版本都比较经典.VC6以快著称 VC7.1折中 VC8和VC9都差不多的.
对了,VC8(VS2005)和更高版本需要注意time_t类型占用空间问题,VC8以下的是32位的,VC8和更高版本默认是64位的,可以定义宏_USE_32BIT_TIME_T来使用32位time_t.
还有,源码路径不能有中文,或者最起码链接器生成exe的路径不能含有中文.否则会提示找不到文件的错误.具体原因没找到.
最后放上下载地址
http://115.com/folder/fbgvmmk7#VS2010平台工具集
偷懒的直接下
VCPlatformTools.7z
这个文件,里面包含了VC6,VC7.1,VC9的文件和注册表文件还有一份简易说明
不想下这么大文件的自己看情况下.
通过Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等编译器进行项目编译的更多相关文章
- 【转】VC++10(VS2010)IDE各种使用技巧
原文网址:http://www.cnblogs.com/sunrisezhang/articles/2802397.html 一个好的coder,他首先必须是一个熟练工.对于C++程序员来说,只有掌握 ...
- VS2010下WPF开发ARCGIS ENGINE 10的带Ribbon控件项目
原文 http://blog.sina.com.cn/s/blog_47522f7f0100nq5t.html 题目好长,但是集目前最新的工具于一身..VS是最新的2010版,不过用的是.net3.5 ...
- vs2010 项目编译 ResGen.exe”已退出,代码为 -1073741701
解决的办法如下: 1.关闭所有Visual Studio: 2.以管理员的身份打开命令提示窗口:(开始-运行-cmd) 3.更改目录至"CD C:\Program Files (x86)\M ...
- Visual Studio IDE环境下利用模板创建和手动配置CUDA项目教程
目前版本的cuda是很方便的,它的一个安装里面包括了Toolkit`SDK`document`Nsight等等,而不用你自己去挨个安装,这样也避免了版本的不同步问题. 1 cuda5.5的下载地址,官 ...
- Python之IDE工具下载安装及注册详解及创建项目
这篇文章很适合刚接触python语言的或者没有语言基础的同学参考: 目录: 一.IDE工具下载安装 二.IDE注册方法 三.使用IDE 开发工具使用创建项目 一.下载并安装, IntelliJ IDE ...
- vs2010 未能正确加载方案中的一个或多个项目
Visual studio在打开解决方案时,往往会碰到一个这样的错误,提示说:未能正确加载方案中的一个或多个项目: 我们可以通过以下步骤来解决该问题:首先,在相应的sln类型文件上点击右键,选择用记事 ...
- vs2010环境下将Win32控制台应用程序,改为Win32项目
进入工程属性后,一次进入下面选项做相应修改 连接器 ---> 系统 --->子系统: 控制台 (/SUBSYSTEM:CONSOLE)改为:窗口 (/SUBSYSTEM:WINDOWS)
- Golang/Go语言/Go IDE/Go windows环境搭建/Go自动提示编译器/GoSublime
Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go ...
- Atitit.ide eclipse编译速度慢的解决
Atitit.ide eclipse编译速度慢的解决 以为是jar的体积与数量,貌似无关.. Err java的数量,貌似无关 Java的数量,关系不大... 最终原因:show>>pro ...
随机推荐
- core Bluetooth(蓝牙4.0)
蓝牙4.0以低功耗著称,一般也叫BLE(Bluetooth Low Energy). 目前主要应用的场景有:智能家居.运动手环和室内导航等. 利用core Bluetooth框架可以实现苹果设备与第三 ...
- H3C汇聚层交换机认证在线人数展示系统之CheckList和燃尽图(16/04/06-16/04/13)
一.CheckList(核查表) 序号 事件 计划完成时间 实际完成时间 未延迟 未完成 完成 1 登录口令加密以及解密 16/04/06 16/04/06 Y 2 表的创建和IP以及口令 ...
- console对象
今天无意中看到console.info()的时候不自觉的楞了一下,对于console.info()确实不是十分的了解,平时就是用console.log(),既然不太明白就去网上看了一下关于consol ...
- Protobuf C#教程 ThriftC#教程大合辑
android与PC,C#与Java 利用protobuf 进行无障碍通讯[Socket] http://www.cnblogs.com/TerryBlog/archive/2011/04/23/20 ...
- html默认属性
对于display为block来说width默认是满长的,即父级得100%,而高度是0,除非手动设置为100%或指定高度.
- Lua小技巧
来公司以后,业务逻辑都用lua写.写了好长时间了,到最近才觉得有点掌握了Lua的灵活.最近用Lua写了个类似集合一样的东西,如果两次向集合里放入同一个元素,就会报错,方便检查配置.代码如下: -- k ...
- PAT (Advanced Level) Practise:1027. Colors in Mars
[题目链接] People in Mars represent the colors in their computers in a similar way as the Earth people. ...
- safari 日期对象新建new Date( timeStr ) 参数TimeStr格式
这是一个浏览器兼容的问题,在此总结一下,别老在这掉坑. 先坐下测试 var timeStrArray = [ '2016-10-04', '2016.10.04', '2016/10/04', '10 ...
- PEP 8
官方文档: PEP 8 :Style Guide for Python Code 部分翻译: http://www.blogjava.net/lincode/archive/2011/02/02/34 ...
- Tomcat口令猜解工具【Python脚本】
Tomcat 服务器网页部署,登录需用户名/密码,编写了一个简单的Python脚本来测试一些简单的弱口令. 测试环境:Tomcat版本 7.0 登录界面采用basic认证,Base 64加密一下,模拟 ...