查看: 4286|回复: 4

osggis编译出错

[复制链接]

该用户从未签到

发表于 2008-12-24 16:50:15 | 显示全部楼层 |阅读模式
我使用的是vs2008编译osg代码,编译过程中出现了如下错误提示:
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(359) : error C3163: “_vsnprintf”: 属性与以前的声明不一致
大家有遇到这种问题吗?
如果有人解决的话,是怎么解决的?

该用户从未签到

发表于 2008-12-24 18:09:19 | 显示全部楼层
标题不是编译osggis吗?帖子里怎么又成了编译osg?请问你到底是编译什么?osggis没编译过,osg我倒是用vc2008编译成功过。就是参考的本论坛中array的教程,先用cmake生成工程,再用vc打开编译就成了。个别文件中有编码问题,就是有些字符识别不了,成了问号,改一下再编译就好了。
不行在网上搜一下vc的环境变量设置,设置好了再编译试试。

[ 本帖最后由 x_wp 于 2008-12-24 18:12 编辑 ]

该用户从未签到

发表于 2008-12-24 18:31:05 | 显示全部楼层
这个函数蛮知名的,是MSVC与C语言标准格格不入的著名案例。使用C语言标准编写的代码如果用了snprintf, vsnprintf,到MSVC下都会出问题。

先想办法去除楼主的错误再看看,直接修改stdio.h
  1. #if (_MSC_VER < 1500)
  2. #define vsnprintf _vsnprintf
  3. #endif
复制代码

[ 本帖最后由 array 于 2008-12-24 18:32 编辑 ]

该用户从未签到

 楼主| 发表于 2008-12-25 09:03:08 | 显示全部楼层

回复 2楼 的帖子

to x_wp:对不起我打漏了,应该是osggis,osg我已经在我的系统上编译成功了

该用户从未签到

 楼主| 发表于 2008-12-25 09:12:51 | 显示全部楼层

回复 3楼 的帖子

to array: 确实就是这个问题,但是直接修改stdio.h问题依然,仔细看发现是在编译OGR_Utils.cpp时报的这个错,然而OGR_Utils.cpp里却根本没有类似#define vsnprintf _vsnprintf之类的定义,于是打开其对应的头文件,依然没有找到,头文件嵌套头文件,我靠,真是麻烦大了,后来实在没办法了,就把所有的头文件打开搜索,居然让我找到了,这个预定义出现在cpl_config.h里:
#define vsnprintf _vsnprintf
#define snprintf _snprintf
将这两行代码按你所说进行修改:
#if _MSC_VER < 1500
#define snprintf _snprintf
#define vsnprintf _vsnprintf
#endif
编译通过! 打完收工 :)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表