/*! 在低版本的 vc 中使用 vc 10.0 的新特性 created by : andrew.wu (erpingwu@gmail.com)
http://blog.oolanguage.com/erpingwu/在低版本-vs-ide-使用-vc-100-的新特性/
*/
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 中测试通过