我现在用的VisualStudio 最新版本 visual studio 2015,按提示将旧工程转成了vs2015格式。

然后编译,报出无数错误。。。

c:\program files (x86)\microsoft visual studio 14.0\vc\include\stdint.h(17): error C2371: “int8_t”: 重定义;不同的基类型

函数“int snprintf(char *const ,const size_t,const char *const ,…)”已有主体

。。。。。

看到上面的一大堆报错,脑子一下子就晕了,尼玛,什么玩意儿,编译器支持这么差?没有说明不支持vs编译器啊。
仔细分析上面的错误信息,发现主要就是snprintfint8_ttimespec重定义,

考虑到vs2015比较新,用google搜索了一下”tcmalloc vs2010”,发现了这篇文章《TCMalloc static lib in vs2010》

文中解决的问题我并不关心,但我发现了这个:(#define WIN32_OVERRIDE_ALLOCATORS in config.h).

在项目工程下面果然发现找到了文中提到的config.h以及提到的宏定义WIN32_OVERRIDE_ALLOCATORS

config.h通过宏定义来控制代码生成。在不同的编译器下编译,要根据编译报错的信息来相应修改config.h来解决。上图中最后一行,就是关于snprintf的

/* Define to 1 if your libc has a snprintf implementation */
#undef HAVE_SNPRINTF

根据注释的说明,如果编译已经有snprintf 的实现,就要将HAVE_SNPRINTF定义为1

config.h中找到下面的定义

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

改为

/* Define to 1 if you have the <stdint.h> header file. */ #define HAVE_STDINT_H 1

这是port.h中的关于timespec的代码片段,看代码注释,是因为mingw没有定义timespc,而且mingw64中有定义,所以有点混乱,所以在这里用_TIMESPEC_DEFINED来做一个保护

// mingw64 seems to define timespec (though mingw.org mingw doesn't),
// protected by the _TIMESPEC_DEFINED macro.
#ifndef _TIMESPEC_DEFINED
struct timespec {int tv_sec; int tv_nsec; }; #endif

而在<time.h>是通过_CRT_NO_TIME_T来控制是否定义timespec

#ifndef _CRT_NO_TIME_Tstruct timespec{time_t tv_sec;  // Seconds - >= 0long   tv_nsec; // Nanoseconds - [0, 999999999] }; #endif

所以在config.h中加入下面一行,以去掉time.h中的timespec定义

#define _CRT_NO_TIME_T 1

最后保存config.h再编译,就可以通过了。

但是,编译通过只是第一步,是否能真的正常使用,还有待后面工作进行验证。

结论

要正确编译tcmalloc,应该根据c++编译器类型和版本的不同,修改config.h以达到与编译工具最匹配的状态,config.h中还有很多选项没有仔细研究,需要进一步深入了解。

vs2015升级旧工程报snprintf已有主体及“int8_t” 重定义相关推荐

  1. eclipse导入已存在工程报 Faceted Project Problem 错误

    现象:  向eclipse里面导入已存在工程时,报如下错误:  Description Resource Path Location Type  Target runtime Apache Tomca ...

  2. eclise导入已存在工程报 Faceted Project Problem 错误

    现象:  向eclipse里面导入已存在工程时,报如下错误: Description Resource Path Location Type  Target runtime Apache Tomcat ...

  3. VS2015新建C++工程时,Object reference not set to an instance of an object

    意思是未将对象引用设置到实例. 刚在Windows7 64位上安装VS2015,创建工程时,就弹出此报错框. 解决办法: 在window中打开功能里输入regedit,回车打开注册器.然后进入如下路径 ...

  4. 职教云打卡可以补签吗_雁城“网红路”升级改造,部分红叶李已被挖出,以后还可以在此地打卡吗?...

    近日,有有网友询问:资阳城区大千路目前是在扩道还是改造?大千路是市民心中的"网红路",那里的红叶李会被移走吗? 带着市民的问题,记者赶往大千路了解情况."砰砰砰!&quo ...

  5. eclipse导入工程报错Faceted Project Problem(1 item)

    问题描述: 我把完整的项目从Windows系统中复制到Ubuntu中,在Ubuntu中导入到eclipse之后,报错"eclipse导入工程报错Faceted Project Problem ...

  6. Windows Server 2003 sp1升级到sp2报错解决办法

    Windows Server 2003 sp1升级到sp2报错解决办法 [问题描述]今天利用360安全卫士,检测Windows Server 2003 sp1更新包,并升级到sp2时,报如下错误: [ ...

  7. rockbox eq_使用Rockbox升级旧iPod

    rockbox eq If you are tired of trying to keep up with Apple's new iPod releases, upgrade your old iP ...

  8. 关于C#调用非托管DLL,报“内存已损坏的”坑,坑,坑

    因客户需求,与第三方对接,调用非托管DLL,之前正常对接的程序,却总是报"内存已损坏的异常",程序进程直接死掉,折腾到这个点(2018-05-11 00:26),终于尘埃落定,直接 ...

  9. SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -

    SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 - 收到用户报错说,他执行MIR7做预制发票的时候,SAP弹出如下框框: 登陆SAP,左键单击如下图 ...

  10. 图形界面报错“已拒绝X11转移申请”的解决方法

    图形界面报错"已拒绝X11转移申请"的解决方法 参考文章: (1)图形界面报错"已拒绝X11转移申请"的解决方法 (2)https://www.cnblogs. ...

最新文章

  1. [j2me]手机也可以玩播客(Podcast)! Geek开发说明[开源]
  2. C语言图像处理二值图细化,Visual C 实现二值图像处理
  3. SQL性能第2篇:查询分析和访问路径制定
  4. C++ 变量和常量
  5. 计算机教学的弊端,信息技术在教学中的利弊及解决对策
  6. 【vant】爬坑引用本地图片
  7. Android开发者要搬运多少年代码才能突破年薪40W?
  8. 【渲染管线】关于透明度混合blend
  9. 奇虎360 2015校园招聘笔试编程题
  10. 计算机社团感恩节免费维修周策划书,社团感恩节活动策划书范文 .docx
  11. 你还在使用JDK7,今天阿粉带你来了解一下JDK8,不得不说,真香!
  12. 行业短信应用的类型与短信模板
  13. Oracle海量数据清理-表空间释放
  14. 口语100的flash驱动
  15. HP-UNIX 系统日志 查询
  16. web前端CSS之“ calc() 函数”
  17. 【转】IE8与Visual Studio“打架
  18. 线段树学习心得 poj3468
  19. 【国君非银】TAMP研究之一:它的美国起源史
  20. 几个实用的软件开发工具之——代码编辑工具

热门文章

  1. 计算机报名登录老显示验证码错误是怎么回事,为何登录博客时输入了正确的验证码却总提示验证码错误?...
  2. 医院计算机管理工资,医院绩效管理平台:绩效工资管理系统
  3. mysql order by 排序技巧
  4. 绘制地图其实并不难!如何绘制地图?看看Smartbi的制作方法
  5. 【游戏设计模式】之一 序言:架构,性能与游戏
  6. 免费可商用图片网站整理
  7. Javakeytool生成RSA密钥
  8. 垃圾分类数据集(垃圾图片数据集)
  9. 教你如何将 优酷网等视频网站的视频外链时自动播放
  10. win7 计算机登录用户密码,Win7电脑无需知道密码绕过密码登录的操作方法?