当前位置:科技动态 > vs2010对应的vc_

vs2010对应的vc_

  • 发布:2023-09-20 19:22

本文内容中的部分资料和知识来源于网络,具体引用出处不明.

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://www.sychzs.cn/?下载支持工具进行安装(开源项目,有兴趣可自行研究).

安装完后会在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**(版本号)目录里的www.sychzs.cn32.v**.props文件

该文件就是对VS2010中用到的几个环境变量进行赋值等操作.常用的有

$(VSInstallDir) ----VS安装目录(某些dll需要用到)

$(VCInstallDir) ----VC安装目录(include lib文件等)

$(ExecutablePath) ----可执行工具目录(cl link等)

以VC7.1为例

1 71

2 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VC@ProductDir)

3 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\7.1\Setup\VC@ProductDir)

4 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\7.1\Setup\VC@ProductDir)

5 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCExpress\7.1\Setup\VC@ProductDir)

6 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VS@ProductDir)

7 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\7.1\Setup\VS@ProductDir)

8 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\7.1\Setup\VS@ProductDir)

9 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCExpress\7.1\Setup\VS@ProductDir)

10 $(VCInstallDir)PlatformSDK\

11 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework@InstallRoot)

12 $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework@InstallRoot)

13 $(VSInstallDir)SDK\v1.1\

14 v1.1.4322.573

15 $(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);

16 $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(VCInstallDir)PlatformSDK\include;$(VCInstallDir)PlatformSDK\common\include;$(FrameworkSDKDir)include;

17 $(FrameworkDir)$(FrameworkVersion);$(VCInstallDir)atlmfc\lib;

18 $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(VCInstallDir)atlmfc\lib\i386;$(VCInstallDir)PlatformSDK\lib;$(VCInstallDir)PlatformSDK\common\lib;$(FrameworkSDKDir)lib;$(VSInstallDir);$(VSInstallDir)lib;

19 $(VCInstallDir)atlmfc\src\mfc;$(VCInstallDir)atlmfc\src\atl;$(VCInstallDir)crt\src;

绿色粗体部分就是该版本所需要的各种文件的路径,注意路径必须以"\"结尾.

$(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)这个环境变量为空时才会设置$(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://www.sychzs.cn/folder/fbgvmmk7#VS2010平台工具集

由于115网盘内的文件已经找不到, 现在补上百度云的链接, 但是百度云是rar的, 内容应该和当初115网盘的7z一样:

链接:http://www.sychzs.cn/s/1milgsZ2?密码:m1rx

偷懒的直接下

VCPlatformTools.7z

这个文件,里面包含了VC6,VC7.1,VC9的文件和注册表文件还有一份简易说明

不想下这么大文件的自己看情况下.

转载于:https://www.sychzs.cn/u/2477950/blog/1605567

首先是OpenCV的版本选择。不是所有版本的OpenCV都支持你的Visual Studio版本,同样的,不是所有版本的Visual Studio都与OpenCV的特定版本相兼容。

失误的经历:在我下载OpenCV时,我就没有注意到这个问题,下载了OpenCV3.2,按照官方教程配置之后出现了很多问题。后来我发现\opencv\build\x64内只有vc14文件夹,上网查资料发现这里的vc14对应该版本OpenCV对应的支持版本VS2015 ,类似的对应关系归纳如下:

vc6 -> VS6.0

vc7.0 -> VS2002

vc7.1 -> VS2003

vc8 -> VS2005

vc9 -> VS2008

vc10 -> VS2010

vc11 -> VS2012

vc12 -> VS2013

vc13 -> VS2014

vc14 -> VS2015

由现在的版本来看,OpenCV 3.2.0只支持VS2015。其实从OpenCV 3.0.0正式版开始就与VS2010不兼容了。如果需要使用最新的版本,还是建议更新VisualStudio的版本。对于VS2010平台,OpenCV?3.0.0 Beta和OpenCV?2.4.10都是兼容的。OpenCV?3.0.0 Beta同样也支持VS2010\VS2012\VS2013 和 VS2015

官方下载地址为:http://www.sychzs.cn/releases.html

根据系统选择合适的pack来下载。其中的Documentation是官方提供的相关帮助,包括配置的步骤,如http://www.sychzs.cn/3.2.0/d6/d8a/tutorial_windows_visual_studio_Opencv.html。

其中强调一点,教材里写的

A full list, for the latest version would contain:

opencv_calib3d300d.lib

opencv_core300d.lib

opencv_features2d300d.lib

opencv_flann300d.lib

opencv_highgui300d.lib

opencv_imgcodecs300d.lib

opencv_imgproc300d.lib

opencv_ml300d.lib

opencv_objdetect300d.lib

opencv_photo300d.lib

opencv_shape300d.lib

opencv_stitching300d.lib

opencv_superres300d.lib

opencv_ts300d.lib

opencv_video300d.lib

opencv_videoio300d.lib

opencv_videostab300d.lib

这里的300指的是版本号,末尾的d代表debug,包含的文件也不一定有这么多,具体要看下载下来的lib文件夹内的文件而定。

以上是个人看法,若有错误请多指点。

在C++/CLI中修改VC++的framework版本,由于VS2010不支持像C#项目文件的那种直接的下拉框模式,我们需要在.vcxproj文件中修改目标版本(TargetFrameWorkVersion)。

VS2010中并没有默认的把这个节点添加到项目中,需要手动的添加这个xml节点:

1:使用文本编辑器打开.vcxproj文件,找到并修改如下内容:

? ??? v2.0 ??? {12A7E493-F7A1-44E8-93FF-8957F12BB839} ??? SAK ??? SAK ??? SAK ??? SAK ??? Win32Proj ??? AssemblyHelper ?

2:重新打开解决方案就可以看到已修改了版本号。

3:

更改项目工具集

在 Visual Studio 中,打开项目的“属性页”。在左窗格中,展开“配置属性”,然后选择“常规”。 在右窗格中,选择“平台工具集”,然后选择需要的工具集。例如,如果要针对 Visual Studio 2008 库进行编译,请选择“v90”。(VS2010应该选V100) 单击“确定”。

?

如果使用VS来编写vcxproj文件,VS会自动提示TargetFrameworkVersion的输入。但需要关闭解决方案才可以编辑这个文件。

?

相关文章