WIN7下VS2008生成Detours3.0
Detours是微软开发的一个函数库,可用于捕获系统API。在用其进行程序开发之前,得做一些准备工作:
一.下载Detours
在http://research.microsoft.com/sn/detours 可免费下载Detours。当前最新的是DetoursExpress30.msi。如果你的是2.1版本的,步骤基本上与此类似,只是生成后会需要用到的文件是detoured.lib与detours.lib。
二.安装Detours
一路NEXT,记住你所安装的路径。
三.生成Detours库
在安装后的文件夹下找不到直接可以拿来用的LIB文件,需要自己去生成库。我生成Detours.lib的环境是WIN7 vs2008。另外帮助文档也在安装路径里边,文件名是Detours.chm.
将Detours路径下的文件夹拷贝到**\Microsoft Visual Studio 9.0\VC路径下,注意是整个文件夹(其它版本VC自己照着复制)。当然不复制也行,复制主要是为了便于后边的操作。
命令行输入,切换至 **\Microsoft Visual Studio 9.0\VC\bin目录运行vcvars32.bat
切换到**\Microsoft Visual Studio 9.0\VC\Detours Express 3.0,然后输入..\bin\nmake指令,编译成功后在Detours Express 3.0\lib.X86文件下就能找到detours.lib文件了。
四.常见错误
错误1:
rc /nologo /DDETOURS_BITS=32 /foobj.X86\simple.res /i..\..\include simple.rcfatal error RC1106: invalid option: -ologo NMAKE : fatal error U1077: “"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\rc.EXE"”: 返回代码“0x1” Stop. NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"”: 返回代码“0x2” Stop. NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"”: 返回代码“0x2” Stop.
解决办法:找到simples下的common.mak文件,用记事本打开,找到如下的代码,然后去掉 .rc{$(OBJD)}.res: 下边一行代码里的/nologo
############################################################################## ## .SUFFIXES: .cpp .h .obj .rc .res .cpp{$(OBJD)}.obj: $(CC) /nologo $(CFLAGS) /Fd$(OBJD)\vc.pdb /Fo$@ /c $(*B).cpp .rc{$(OBJD)}.res: #rc /nologo /DDETOURS_BITS=$(DETOURS_BITS) /fo$(@) /i$(INCD) $(*B).rc rc /DDETOURS_BITS=$(DETOURS_BITS) /fo$(@) /i$(INCD) $(*B).rc ## ################################################################# End of File.
如果你的工程是从vs2005或者vs2008迁移到vs2010, 并且出现了错误: fatal RC1106: invalid option: -ologo
原因: ”The RC command in the SDK of version 6.x does not support -ologo. You need to install the SDK whose version is larger or equal than 7.x.”
所以请检查你的的vc++ directories 里用的sdk版本, 确认为7.x版本即可.
错误2:NMAKE:fatal error U1077.“cl.exe” return code 0xc0000135
产生原因:在安装visual studio的时候没有勾选注册环境变量导致的。
解决办法:在系统环境变量中加入visual studio的安装路径:vs安装路径\VC\Bin,以及vs安装路径\Common7\IDE