Win7 64b的VS2015 如何使用nmake成功编译detour express 3.0-error2202 警告被视为错误 - 没有生成“object”文件

首先打开你的开始目录,找到VS2015,找到如图1所示的开发人员命令提示。打开

图1 从开始菜单打开VS的开发人员命令行

图2 打开VS2015开发人员命令提示

傻瓜式安装detour express 3.0,安装完成后,应该在你的C:\Program Files (x86)\Microsoft Research\Detours Express 3.0下有了detour的源码以及makefile等文件。注意博主是默认目录安装,如果是安装时改动过了,注意自己加以修改。

图3  detour express 3.0的根目录

然后使用cd指令,在开发人员命令行中进入到detour的根目录

cd C:\ProgramFiles (x86)\Microsoft Research\Detours Express 3.0

图4 进入到detour的根目录

可以看到图三中detour express3.0提供了makefile,也就是说可以使用vcvarsall自带的nmake命令对这个文件进行编译,从而生成静态库lib文件。这时我们使用nmake命令编译

nmake

图5 nmake命令报错

cd "C:\Program Files (x86)\Microsoft Research\Detours Express 3.0\src"
	cl /W4 /WX /Zi /MTd /Gy /Gm- /Zl /Od /DDETOURS_BITS=32 /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x403 /Gs /DDETOURS_X86=1 /DDETOURS_32BIT=1 /D_X86_ /DDETOURS_OPTION_BITS=64 /Fd..\lib.X86\detours.pdb /Foobj.X86\detours.obj /c .\detours.cpp
detours.cpp
.\detours.cpp(156): error C2220: 警告被视为错误 - 没有生成“object”文件
.\detours.cpp(156): warning C4456: “pbNew”的声明隐藏了上一个本地声明
.\detours.cpp(156): note: 要简化迁移,请考虑暂时对用于生成且不引发警告的编译器版本使用 /Wv:18 标记
.\detours.cpp(147): note: 参见“pbNew”的声明
.\detours.cpp(163): warning C4456: “pbNew”的声明隐藏了上一个本地声明
.\detours.cpp(163): note: 要简化迁移,请考虑暂时对用于生成且不引发警告的编译器版本使用 /Wv:18 标记
.\detours.cpp(147): note: 参见“pbNew”的声明
.\detours.cpp(1263): warning C4456: “o”的声明隐藏了上一个本地声明
.\detours.cpp(1263): note: 要简化迁移,请考虑暂时对用于生成且不引发警告的编译器版本使用 /Wv:18 标记
.\detours.cpp(1112): note: 参见“o”的声明

然而不幸的是,呵呵哒了。编译器报错退出,但是我们可以看到,让编译器不继续编译的error C2220并不是一个标准的错误,而是一个将警告当成错误的编译行为。因为我们的源码是从ms官网download的,不应该出现错误。实际上是我们的编译器设置的问题,如果在IDE里,只需要将配置里的/WX选项去掉就可以了。

但是我们并没有打开ide,使用的是命令行工具,而nmake也没有相应的参数指令可以配置取消警告当成编译这个选项,这个时候,我们需要对detour的makefile进行修改。

图6 用记事本打开src文件夹下的makefile

打开src目录,右键点击src目录下的makefile文件,使用记事本打开,我们需要对这个进行修改。

图7 src文件夹下的makefile文件

我们直接定位到

CFLAGS=/W4 /WX /Zi /MTd /Gy /Gm- /Zl /Od /DDETOURS_BITS=$(DETOURS_BITS) 

这行,把/W4改成/W3,并且去掉/WX也就是将这行变成:

CFLAGS=/W3 /Zi /MTd /Gy /Gm- /Zl /Od /DDETOURS_BITS=$(DETOURS_BITS)

图8   修改过的makefile文件

这个时候,只要在VS的命令行工具下重新执行nmake。大家最好把detour在自己的电脑里编译,因为detour工具实际上是与你电脑的环境变量挂钩的。别人编译好的dll文件你不一定能用。

但是博主发现尽管src下的源文件都成功编译了,但是sample下的文件依然报错如下图所示:

图9 发现sample里边的实例依然无法编译

博主把detour目录下的所有makefile都遍历了一遍,发现都没有/WX这个关键词出现,折腾了半天。

后来使用全文搜索发现在sample文件夹下有一个common.mak文件里边有/WX /W4这个关键字打开一看果不其然!

图10 发现罪魁祸首

图11 common.mak文件夹下的CFLAGS

这个时候只要把这行也改成相应的

CFLAGS=/nologo /Zi $(CLIB) /Gm- /W3 /Od/DDETOURS_BITS=$(DETOURS_BITS)

图12 修改过的common.mak文件

重新编译,就可以顺利完成啦!注意可能还是会报错,但是实际上并不妨碍你使用了,你需要的静态库基本都可以调用了

图13 成功生成静态库lib

时间: 2024-08-07 06:53:57

Win7 64b的VS2015 如何使用nmake成功编译detour express 3.0-error2202 警告被视为错误 - 没有生成“object”文件的相关文章

win7+cuda+anaconda python+tensorflow-gpu+keras安装成功版本匹配汇总

win7+cuda+anaconda python+tensorflow-gpu+keras安装成功版本匹配汇总 2019-09-20 15:06:03 wyx100 阅读数 38更多 分类专栏: ML,开发环境配置 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/wyx100/article/details/101061064 大家在安装配置过程中遇到了很多坑,其中大部分和软件之间的版本

联想电脑win7旗舰版环境下的如何成功配置AppServ

毕业设计中需要用Mysql数据库,并且想找一个方便Mysql数据库编程的开发工具,百度搜索了一下,AppServ集成环境安装包能快速搭建环境. 安装过程比较简单 一.下载安装包,我下载的是AppServ 2.5.10 for Windows,推荐大家到appserv 官方网站  http://www.appservnetwork.com/  下载安装包 二.点击安装程序,按照提示一路安装下去 注意: 1.Apache HTTP service PHP运行环境(必选项) 3. MYSQL data

Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说白了其实是懒得用OpenGL写画几何体代码,画线,AA什么的. 不管怎么说,介绍看的是这篇文章. http://www.cnblogs.com/yanhuiw/p/3885144.html 提到了3个矢量库,因为墙的原因,google的Skia死活弄不下来,所以只写前两个. 首先是AGG,http:

[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6.0的源码编译出来了,各种配置,各种error,各种爬坑,特写此博客记录爬坑经历.先上图,Ubuntu上编译完后成功运行模拟器,如图: 2 编译环境 UbuntuKylin 16.04 LTS Android 6.0_r1 Open JDK 7 3 准备工作 (1) 下载android 6.0源码.

Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 (转)

1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6.0的源码编译出来了,各种配置,各种error,各种爬坑,特写此博客记录爬坑经历.先上图,Ubuntu上编译完后成功运行模拟器,如图: 2 编译环境 UbuntuKylin 16.04 LTS Android 6.0_r1 Open JDK 7 3 准备工作 (1) 下载Android 6.0源码. Androdi 6.0源码下载地址: http://pan.baidu.com/s/1o6N86a2 感谢下面这位博主上传

解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离

转载自 http://www.cnblogs.com/therock/articles/2261371.html 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离 服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何用户参与. Windows 服务在后台执行着各种各样任务,支持着我们日常的桌面操作.有时候可

proftpd +mysql+ssl ,无法成功编译出mod_sql mod_sql_mysql 模

proftpd +mysql+ssl ,无法成功编译出mod_sql mod_sql_mysql 模块,内网yum 按的mysql 外网源码装的mysql,都不行,还是看官方文档的 http://www.proftpd.org/docs/contrib/mod_sql.html#Installation centos  proftpd-1.3.5版本 1.内网yum mysql环境 #  ./configure --prefix=/usr/local/proftpd --with-modules

实验环境里新创建成功的web application却在浏览器中返回404错误

刚刚翻笔记翻到一些刚学SharePoint时候解决的一些很2的初级问题,本来是有些挣扎该不该把它们记录到这个blog里的?因为担心这些很初级的文章会拉低这个blog的逼格,但是我的哥们善意的提醒了我一下,说我的逼格本来就不高,于是我就放心的开写了. 其实不开玩笑的讲,做一个SharePoint Administrator很多时候不会碰到很多developer们碰到的那么高大上的问题,难的问题虽然也会经常有,但更多的都是一些琐碎的杂七杂八的问题,可人生不就是从杂七杂八中一点一点积累的过程吗?不记录

win7 成功编译v8引擎过程记录

基本系统环境是win7+vs2010 下载V8源码: 有几种方式可以选择,工具使用svn和git均可,视下载源而定 直接从google的官网下载 svn checkout http://v8.googlecode.com/svn/trunk/ v8 (如果你可以连接的话,可以选择这种方式,反正我是连不了) 另一种方法是从www.github.com下载,上面有源码的官方备份,访问稳定,不像google的网经常被政府逼视.下载方法 svn checkout https://github.com/v