明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6923|回复: 17

再谈用VS+VC绿色版编译多版本

  [复制链接]
发表于 2016-6-25 18:54 | 显示全部楼层 |阅读模式
本帖最后由 highflybird 于 2016-10-24 09:44 编辑

以前发帖谈到过用VS2010+ VC6,VC2002,VC2005,VC2008绿色版进行多个版本的编译。
今天对那个方法改进一下,使得它更简单。
这里说的VS 指的是Microsoft Visual Studio 2010或者更高版本;
绿色版的仅仅包含了只含编译器及相关开发库文件,可不含IDE或其他。存放目录可任意,无须修改注册表。
假设你只是装了VS2010, (实际这个方法适用于VS2012,VS2013,VS2015)

步骤:
1.先下载安装 Daffodil.ENU.msi,下载地址:
http://daffodil.codeplex.com/releases/view/55712
2.进入各个编译器的bin目录,检测 CL.exe, LINK.exe这两个程序(可能还有rc.exe)能否正常运行,是否缺少库文件,一般来说可能或缺少:
mspdbXX.dll,msObjXX.dll。把缺少的拷贝进去。
3.进入 盘符:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets;可以看到下面有子目录
V60,V70等等。以VC2002为例子,进入Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v70:
编辑 Microsoft.Cpp.Win32.v70.props文件(可在编辑之前先备份原文件):
找到:
    <VCInstallDir>......</VSInstallDir>这一段:
改成:
    <VSInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS@ProductDir)</VSInstallDir>
    <VCInstallDir>$(VSInstallDir)vc7\</VCInstallDir>  
这里我用了$(VSInstallDir)vc7\来代表VC2002的存放位置为:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC7,你应当视你的目录修改这个
譬如:  <VCInstallDir>D:\DEV\VC2002\</VCInstallDir> 之类的。
对于其他版本和64位的类似修改.
4.在VS里面分别设置各个版本的platform toolset即可
VC6-->v60
VC2002-->v70
VC2005-->v80
VC2008-->v90
VC2010-->v100
等.
然后编译,OK.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
张和平 + 1 + 5 很给力!

查看全部评分

 楼主| 发表于 2016-6-25 18:55 | 显示全部楼层

上传一个文件供大家测试用:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2016-6-27 13:52 | 显示全部楼层
发表于 2016-6-28 13:07 | 显示全部楼层
高版,请教个问题,Daffodil.ENU.msi平台工具只有V60、V70、V80,如果只装VS2015的情况下,V90、V100、V110平台该怎么建立呢?我现在是装了VS2010、VS2012和VS2015,这样的话平台就都显示了。不装VS2010和VS2012就没有V90-V110平台
 楼主| 发表于 2016-6-28 17:21 | 显示全部楼层
把全装时候的拷贝过来就行了吧。没测试。
发表于 2016-7-1 18:24 | 显示全部楼层
感谢分享,先保存起来。以前试过绿色版的,鉴于有时候需要IDE,所以后面全部用的安装版了。目前是vs6-2010全部安装的,vs2010统一编译。
不知道高版对于向导建立arx项目的时候有没有办法直接自动加入平台配置设置,包括包含目录,等配置。
发表于 2016-8-1 12:05 | 显示全部楼层
springwillow 发表于 2016-6-28 13:07
高版,请教个问题,Daffodil.ENU.msi平台工具只有V60、V70、V80,如果只装VS2015的情况下,V90、V100、V110 ...

原文如下:
Daffodil provides native multi-targeting platform toolsets for Visual Studio 2010 C++ developers who need to target older versions of Visual Studio.
=====================================
VS2010及后续版本不再直接支持,必须安装完整的程序才可以。
发表于 2016-8-3 09:56 | 显示全部楼层
本帖最后由 panfanggui 于 2016-8-3 11:36 编辑

vs2015使用vc70平台工具没成功过,其他的VC6-VC110均成功(mfc程序)。VC70 对应的net framework 1.0在windows 10上根本就不支持。错误:C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v70\Microsoft.Cpp.Win32.v70.targets(307,5): error MSB6006: “CL.exe”已退出,代码为 -1073741515

在vs2015使用vc70平台成功的请告诉一下该怎样解决的。
发表于 2016-8-4 01:44 | 显示全部楼层
发现vc90 debug配置下编译出错
fatal error C1902: Program database manager mismatch; please check your installation
解决方法:

从”C:\Program Files\Microsoft Visual Studio 9\Common7\IDE” 拷贝文件”mspdbsrv.exe,mspdbcore.dll”到”C:\Program Files\Microsoft Visual Studio 9\VC\Bin”。

这两个是调试相关的程序,在高飞的绿色版中缺失,导致无法调试,只能Release配置。。
下面附上这两个文件



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-8-4 11:13 | 显示全部楼层
panfanggui 发表于 2016-8-3 09:56
vs2015使用vc70平台工具没成功过,其他的VC6-VC110均成功(mfc程序)。VC70 对应的net framework 1.0在wind ...

我的没问题,各版本测试均OK.
在vs2015的提示符下,进入vc7的bin目录,运行cl.exe ,看是否可运行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-23 19:07 , Processed in 0.271495 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表