Visual C++编译环境免安装命令行版
VC的IDE开发环境很好,但太大了,经常是2005/2008/2010装一大堆,占用几十G的空间。用惯了Linux的命令行方式,觉得小巧精致。于是想把VC的基本命令提取出来,也做一个绿色版本。
保留基本的编译命令,cl、lib、link、ml之类的。编译工程只能用nmake了。vcproj工程文件怎么办?用scons重写一个吧。(其实命令行也有个vcbuild)。
制作绿色版之前,首先要安装一个VC,再把其中用到的文件提取出来。或者直接快进到后面找下载链接。
Visual C++ 2008制作要领
VC 2008的最大问题是Visual Studio采用Side-by-Side方式发布,不能简单的把依赖的DLL着全就行了。
1. 复制C:\Program Files\Microsoft Visual Studio 9.0\VC\bin及其子目录1033,到新的vc9\bin目录
2. 在复制VC目录下的lib和include目录,到新的vc9目录下
3. 复制C:\Program Files\Microsoft Visual Studio 2008\Common7\IDE目录下的:msobj80.dll,mspdb80.dll, mspdbcore.dll, mspdbsrv.exe到vc9\bin
4. 在vc\bin生成manifest文件,名为Micrisoft.VC90.CRT.manifest,内容如下
<?xml version="2.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0"> <noinheritable></noinheritable> <assemblyidentity name="Microsoft.VC90.CRT" publickeytoken="1fc8b3b9a1e18e3b" processorarchitecture="x86" version="9.0.21022.8" type="win32"></assemblyidentity> <file name="msvcr90.dll"></file> <file name="msvcp90.dll"></file> </assembly>
5. 找到Windows\WinSxS目录下的x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_…目录,复制其中的msvcr90.dll和msvcp90.dll到bin目录
Visual C++ 2010制作要领
VC 2010还在Beta阶段,不过据说已经决定不用SxS,直接用DLL发布了,所以制作简单点。
1-3和2008类似,复制bin, include, lib,复制Common7\IDE目录下的几个dll和exe
4. 到Windows\System32目录下找msvcr100.dll, msvcp100.dll,复制到bin
Windows SDK
VC的lib和include里面不带Windows的头文件和库,所以还需要把Windows SDK摘取出来。Windows SDK在安装的时候一般装在C:\Program Files\Microsoft SDKs\Windows\XX目录下,同样把其中的bin, lib, include目录复制出来,到一个新目录,比如win6sdk。
环境设置
影响C编译器的环境变量就三个,INCLUDE、LIB和PATH。设置好就可以编译了。假定上面我把VC 2008和Windows SDK分别复制到了vc9和win6sdk目录下,在与这两个目录的上级目录中,创建一个BAT脚本,假设叫vc9.bat,包含下面内容:
@echo off echo Setting environment Visual C++ 2010 set VCINSTALLDIR=%~dp0vc9 set WindowsSdkDir=%~dp0win6sdk set INCLUDE=%WindowsSdkDir%\include;%VCINSTALLDIR%\include set LIB=%WindowsSdkDir%\lib;%VCINSTALLDIR%\lib set PATH=%FrameworkDir%\%FrameworkVersion%;%WindowsSdkDir%\bin;%VCINSTALLDIR%\bin;%PATH%
再创建一个BAT脚本,叫start-vc9.bat,包含下面一行:
start cmd /K %~dp0vc10.bat
在Windows资源管理器中双击start-vc9.bat就可以配置好环境变量,进入VC 2008的编译环境了。
下载
1. vc10.rar 21M 2010的命令行工具和include/lib打包 下载
需要和3解压到到一起用。双击start-vc10.bat打开一个命令行窗口,就可以用cl, nmake, link等命令了。VC需要的基本环境变量会自动设置。
2. vc9.rar 15M 2008的命令行工具和include/lib打包 下载
需要和3解压到一起用。双击start-vc9.bat打开命令行窗口,VC需要的环境变量会自动设置。
3. win7.rar 16M Windows 7.0 SDK的include/lib打包 下载
注意:命令行编译环境没有包含Debug版的CRT,所有的MFC、ATL的DLL。所以可能存在编译好的程序缺少DLL不能运行的问题。对于2008,可以下载一个VC相关SxS打包。缺DLL就到里面找(参见我的Side-by-Side笔记)。对于2010,由于已经废弃了SxS的发布方式,可以直接到网上下载缺的DLL。
关于你移植的GDI++X64项目给你提出一个重要问题.
我不懂编程,但我是个极细心和高要求的人.所以我还是能帮你很大的忙.
GDI++的HE和新FT版都是不开源的.
开源的GDI++版本中我全部在作者的主页中下载并试用了(环境WINDOWS2008 不是XP 放心)
只有一个老FT版(区别于新FT,它是不带FREETYPE.DLL的) 能够渲染包括开始菜单在内的所有EXPLORER元素和所有程序.我看了下你选用的那个GDI++的版本的配置文件,跟我说的那个老FT版不一样.所以即使你的EZHOOK移植的没问题,你的EZGDI++还是不可能渲染开始菜单和所有程序的.
而且我说的这个老FT(据文档描述好像是FT的开头第一版?不带FREETYPE.DLL就能实现FREETYPE的平滑效果)渲染粗体的效果比HE和老FT版还优秀N倍.尤其是在MMC控制台里,不会像HE和新FT版的GDI++那样把粗体渲染的失真和花版.
最重要的是改版比HE和新FT版还要稳定.从没像HE和新FT版那样报过错或者程序因为它崩溃过,实在是神器.这个神器有个不是缺陷的缺陷,不能UNLOADDLL.不过你采用的也不是不能嘛.而且这个版很奇怪.不该HOOK的程序它都不会HOOK,该HOOK的它都HOOK.不会像HE和新FT一样自动HOOK所有GDI32的程序…………TASKLIST /M的模块里显示有它的进程不多,但是所有图形程序基本它都能渲染……….好神器啊……….!!!
请通过我的邮箱跟我联系,版本号我忘了,在我的网盘里.认识你算我走运.我很需要X64的GDI++.输入法我搞GOOGLE拼音的自定义词库.唯一缺的就是这个GDI++.你的完美绿化VS的文章对我这个追求完美的绿色软件偏执者和刚学C++的菜鸟的学习也是非常有帮助的.
当然你认识我你也很走运.速联系.
看到我的留言了如果你给我发了邮件了请在此页给我个回复.
你好,给你回信了。谢谢你的支持。easyhook版本我过一段时间一定会开始继续开发,希望2周内吧。
X64的版本也是我很希望用到的。目前其实有很大的问题,在于我对easyhook的原理还没有弄的很明白,因为我也是个win32编程菜鸟,但我认为有时间肯定能搞明白。
你说的情况我都不知道:)因为我用FT版用的很少,平时都是用HE版,也没发现HE版和最新的FT版其实都没有不开源,呵呵。