在低版本的 vc 中使用 vc 10.0 的新特性
2009-06-08 20:08:06 来源:WEB开发网/*!
在低版本的 vc 中使用 vc 10.0 的新特性
created by : andrew.wu (erpingwu@gmail.com)
*/
vc 10.0 提供了一些新的特性,最引人注目的莫过于 lambda, 但 vs2010 beta 内存占用之多也不得不让人心生退让.
高手 7cat 指出 "vc ide 只是一个壳"
那么如果利用 vc 10.0 编译器的新功能?
以vc9为例, 注意 Tools->Projects and Solutions->VC++ Directories->Executable files->$(VCInstallDir)bin, 这个说明了IDE所用的cl.exe, link.exe等工具的所在.在此目录前新增一个 $(VCInstallDir)bin_vc10.0, 将所需要的 vc10.0 的文件 copy 过去.
c1.dll
c1xx.dll
c2.dll
cl.exe
cl.exe.config
link.exe
link.exe.config
msobj100.dll
mspdb100.dll
mspdbcore.dll
mspdbsrv.exe
msvcm100.dll
msvcp100.dll
msvcr100.dll
然后找个例子试试,你就发现 c++ 0x 的 lambda 已经能为你所用了, 这时发布程序所用的 dll 还是 vc9 的.
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
[](const string& str){
cout << str << endl;
}("Hello vc 10.0");
}
MS对 vc10 的说法是 “10 Is the New 6”,这一点只在一个地方有体现,不是速度,不是 IDE 内存占用,它表现在程序最终发布上。阿门, vc 10.0 再次可以通过 xcopy 发布,而不用辛苦的对 manifest 做各种 hack 式的处理。
不过,即使是用了 vc 10.0 的 link.exe ,还是不能摆脱 vc9 的困境。这时有一个更夸张一点的做法:不仅仅使用 vc 10.0 的编译与连接工具,还使用它的库。
只需在 Tools->Projects and Solutions->VC++ Directories->Include files 和 Library files 增加 vc 10.0 对应的目录(注意需要在 vc9 原来目录之前)
重建项目后你会发现你可以将程序与所需要的 vc 10.0 的 dll 直接 copy 到没有 vc 10.0 运行库的机器使用了
以上步骤也在 vc 7.1 中测试通过
更多精彩
赞助商链接