免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 16655 | 回复: 9
打印 上一主题 下一主题

linux C++项目使用jsonCPP库,项目不能编译。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-24 09:22 |只看该作者 |倒序浏览
项目采用JSONCPP处理JSON类型的数据,但是,项目编译是出现一下错误,哪位大侠linux 项目中采用了jsonCpp库,帮忙看看。
In file included from /usr/include/c++/4.4/cwchar:47,
                 from /usr/include/c++/4.4/bits/postypes.h:42,
                 from /usr/include/c++/4.4/bits/char_traits.h:42,
                 from /usr/include/c++/4.4/string:42,
                 from ./inc/ttchq.h:5,
                 from src/main.cc:1:
/usr/include/wchar.h:75: error: missing binary operator before token "("
In file included from /usr/include/sched.h:43,
                 from /usr/include/pthread.h:25,
                 from /usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr-default.h:41,
                 from /usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr.h:162,
                 from /usr/include/c++/4.4/ext/atomicity.h:34,
                 from /usr/include/c++/4.4/bits/basic_string.h:41,
                 from /usr/include/c++/4.4/string:53,
                 from ./inc/ttchq.h:5,
                 from src/main.cc:1:
/usr/include/bits/sched.h:129: error: missing binary operator before token "("
/usr/include/bits/sched.h:167: error: missing binary operator before token "("
In file included from /usr/include/libio.h:62,
                 from /usr/include/stdio.h:75,
                 from ./inc/ttchq.h:6,
                 from src/main.cc:1:
/usr/include/sys/cdefs.h:46: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:50: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:135: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:148: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:206: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:215: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:224: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:233: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:245: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:255: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:264: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:272: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:286: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:294: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:317: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:326: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:331: error: missing binary operator before token "("
/usr/include/sys/cdefs.h:338: error: missing binary operator before token "("
In file included from ./inc/ttchq.h:7,
                 from src/main.cc:1:
/usr/include/string.h:37: error: missing binary operator before token "("
In file included from ./inc/ttcapi.h:4,
                 from ./inc/ttchq.h:4,
                 from src/main.cc:1:
/usr/include/stdlib.h:35: error: ‘__BEGIN_DECLS’ does not name a type
/usr/include/stdlib.h:102: error: expected constructor, destructor, or type conversion before ‘;’ token
/usr/include/stdlib.h:140: error: expected constructor, destructor, or type conversion before ‘extern’
/usr/include/stdlib.h:145: error: expected constructor, destructor, or type conversion before ‘extern’
/usr/include/stdlib.h:149: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:152: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:153: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:168: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:190: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:191: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:382: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:383: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:474: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:475: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:488: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:489: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:518: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:531: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:554: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:572: error: expected constructor, destructor, or type conversion before ‘extern’
/usr/include/stdlib.h:717: error: expected constructor, destructor, or type conversion before ‘extern’
/usr/include/stdlib.h:742: error: expected constructor, destructor, or type conversion before ‘typedef’
/usr/include/stdlib.h:755: error: expected constructor, destructor, or type conversion before ‘extern’
/usr/include/stdlib.h:762: error: ‘__compar_fn_t’ has not been declared
/usr/include/stdlib.h:762: error: expected initializer before ‘__nonnull’
/usr/include/stdlib.h:771: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:772: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:773: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:788: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:789: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/stdlib.h:864: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:867: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:872: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:876: error: expected initializer before ‘__THROW’
/usr/include/stdlib.h:877: error: ‘__END_NAMESPACE_STD’ does not name a type
In file included from /usr/include/c++/4.4/cwchar:47,
                 from /usr/include/c++/4.4/bits/postypes.h:42,
                 from /usr/include/c++/4.4/bits/char_traits.h:42,
                 from /usr/include/c++/4.4/string:42,
                 from ./inc/ttchq.h:5,
                 from src/main.cc:1:
/usr/include/wchar.h:106: error: expected constructor, destructor, or type conversion before ‘typedef’
/usr/include/wchar.h:107: error: ‘__END_NAMESPACE_C99’ does not name a type
/usr/include/wchar.h:135: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:149: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:153: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:157: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:161: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:164: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:165: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:194: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:195: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:235: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:237: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:254: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:264: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:275: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:281: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:284: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:285: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:324: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:328: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:333: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:336: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:337: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:355: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:359: error: expected ‘,’ or ‘...’ before ‘*’ token
/usr/include/wchar.h:359: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:365: error: ‘mbstate_t’ has not been declared
/usr/include/wchar.h:365: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:369: error: ‘mbstate_t’ has not been declared
/usr/include/wchar.h:369: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:373: error: ‘mbstate_t’ has not been declared
/usr/include/wchar.h:373: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:375: error: ‘mbstate_t’ has not been declared
/usr/include/wchar.h:375: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:376: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:414: error: ‘mbstate_t’ has not been declared
/usr/include/wchar.h:414: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:415: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:450: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:473: error: expected initializer before ‘__THROW’
/usr/include/wchar.h:474: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:788: error: ‘__END_NAMESPACE_STD’ does not name a type
/usr/include/wchar.h:856: error: ‘__END_NAMESPACE_C99’ does not name a type
In file included from /usr/include/c++/4.4/bits/postypes.h:42,
                 from /usr/include/c++/4.4/bits/char_traits.h:42,
                 from /usr/include/c++/4.4/string:42,
                 from ./inc/ttchq.h:5,
                 from src/main.cc:1:
/usr/include/c++/4.4/cwchar:143: error: ‘::btowc’ has not been declared
/usr/include/c++/4.4/cwchar:144: error: ‘::fgetwc’ has not been declared
/usr/include/c++/4.4/cwchar:148: error: ‘::fwide’ has not been declared
/usr/include/c++/4.4/cwchar:149: error: ‘::fwprintf’ has not been declared
/usr/include/c++/4.4/cwchar:150: error: ‘::fwscanf’ has not been declared
/usr/include/c++/4.4/cwchar:153: error: ‘::mbrlen’ has not been declared
/usr/include/c++/4.4/cwchar:154: error: ‘::mbrtowc’ has not been declared
/usr/include/c++/4.4/cwchar:155: error: ‘::mbsinit’ has not been declared
/usr/include/c++/4.4/cwchar:156: error: ‘::mbsrtowcs’ has not been declared
/usr/include/c++/4.4/cwchar:160: error: ‘::swprintf’ has not been declared
/usr/include/c++/4.4/cwchar:162: error: ‘::swscanf’ has not been declared
/usr/include/c++/4.4/cwchar:164: error: ‘::vfwprintf’ has not been declared
/usr/include/c++/4.4/cwchar:166: error: ‘::vfwscanf’ has not been declared
/usr/include/c++/4.4/cwchar:169: error: ‘::vswprintf’ has not been declared
/usr/include/c++/4.4/cwchar:172: error: ‘::vswscanf’ has not been declared
/usr/include/c++/4.4/cwchar:174: error: ‘::vwprintf’ has not been declared
/usr/include/c++/4.4/cwchar:176: error: ‘::vwscanf’ has not been declared
/usr/include/c++/4.4/cwchar:178: error: ‘::wcrtomb’ has not been declared
/usr/include/c++/4.4/cwchar:179: error: ‘::wcscat’ has not been declared
/usr/include/c++/4.4/cwchar:180: error: ‘::wcscmp’ has not been declared
/usr/include/c++/4.4/cwchar:181: error: ‘::wcscoll’ has not been declared
/usr/include/c++/4.4/cwchar:182: error: ‘::wcscpy’ has not been declared
/usr/include/c++/4.4/cwchar:183: error: ‘::wcscspn’ has not been declared
/usr/include/c++/4.4/cwchar:184: error: ‘::wcsftime’ has not been declared
/usr/include/c++/4.4/cwchar:185: error: ‘::wcslen’ has not been declared
/usr/include/c++/4.4/cwchar:186: error: ‘::wcsncat’ has not been declared
/usr/include/c++/4.4/cwchar:187: error: ‘::wcsncmp’ has not been declared
/usr/include/c++/4.4/cwchar:188: error: ‘::wcsncpy’ has not been declared
/usr/include/c++/4.4/cwchar:189: error: ‘::wcsrtombs’ has not been declared
/usr/include/c++/4.4/cwchar:190: error: ‘::wcsspn’ has not been declared
/usr/include/c++/4.4/cwchar:191: error: ‘::wcstod’ has not been declared
/usr/include/c++/4.4/cwchar:193: error: ‘::wcstof’ has not been declared
/usr/include/c++/4.4/cwchar:195: error: ‘::wcstok’ has not been declared
/usr/include/c++/4.4/cwchar:196: error: ‘::wcstol’ has not been declared
/usr/include/c++/4.4/cwchar:197: error: ‘::wcstoul’ has not been declared
/usr/include/c++/4.4/cwchar:198: error: ‘::wcsxfrm’ has not been declared
/usr/include/c++/4.4/cwchar:199: error: ‘::wctob’ has not been declared
/usr/include/c++/4.4/cwchar:200: error: ‘::wmemcmp’ has not been declared
/usr/include/c++/4.4/cwchar:201: error: ‘::wmemcpy’ has not been declared
/usr/include/c++/4.4/cwchar:202: error: ‘::wmemmove’ has not been declared
/usr/include/c++/4.4/cwchar:203: error: ‘::wmemset’ has not been declared
/usr/include/c++/4.4/cwchar:204: error: ‘::wprintf’ has not been declared
/usr/include/c++/4.4/cwchar:205: error: ‘::wscanf’ has not been declared
/usr/include/c++/4.4/cwchar:206: error: ‘::wcschr’ has not been declared
/usr/include/c++/4.4/cwchar:207: error: ‘::wcspbrk’ has not been declared
/usr/include/c++/4.4/cwchar:208: error: ‘::wcsrchr’ has not been declared
/usr/include/c++/4.4/cwchar:209: error: ‘::wcsstr’ has not been declared
/usr/include/c++/4.4/cwchar:210: error: ‘::wmemchr’ has not been declared
/usr/include/c++/4.4/cwchar: In function ‘wchar_t* std::wcschr(wchar_t*, wchar_t)’:
/usr/include/c++/4.4/cwchar:215: error: invalid conversion from ‘const wchar_t*’ to ‘wchar_t*’
/usr/include/c++/4.4/cwchar:215: error:   initializing argument 1 of ‘wchar_t* std::wcschr(wchar_t*, wchar_t)’
/usr/include/c++/4.4/cwchar: In function ‘wchar_t* std::wcspbrk(wchar_t*, const wchar_t*)’:
/usr/include/c++/4.4/cwchar:219: error: invalid conversion from ‘const wchar_t*’ to ‘wchar_t*’
/usr/include/c++/4.4/cwchar:219: error:   initializing argument 1 of ‘wchar_t* std::wcspbrk(wchar_t*, const wchar_t*)’
/usr/include/c++/4.4/cwchar: In function ‘wchar_t* std::wcsrchr(wchar_t*, wchar_t)’:
/usr/include/c++/4.4/cwchar:223: error: invalid conversion from ‘const wchar_t*’ to ‘wchar_t*’
/usr/include/c++/4.4/cwchar:223: error:   initializing argument 1 of ‘wchar_t* std::wcsrchr(wchar_t*, wchar_t)’
/usr/include/c++/4.4/cwchar: In function ‘wchar_t* std::wcsstr(wchar_t*, const wchar_t*)’:
/usr/include/c++/4.4/cwchar:227: error: invalid conversion from ‘const wchar_t*’ to ‘wchar_t*’
/usr/include/c++/4.4/cwchar:227: error:   initializing argument 1 of ‘wchar_t* std::wcsstr(wchar_t*, const wchar_t*)’
/usr/include/c++/4.4/cwchar: In function ‘wchar_t* std::wmemchr(wchar_t*, wchar_t, size_t)’:
/usr/include/c++/4.4/cwchar:231: error: invalid conversion from ‘const wchar_t*’ to ‘wchar_t*’
/usr/include/c++/4.4/cwchar:231: error:   initializing argument 1 of ‘wchar_t* std::wmemchr(wchar_t*, wchar_t, size_t)’
/usr/include/c++/4.4/cwchar: At global scope:
/usr/include/c++/4.4/cwchar:249: error: ‘::wcstold’ has not been declared
/usr/include/c++/4.4/cwchar:258: error: ‘::wcstoll’ has not been declared
/usr/include/c++/4.4/cwchar:259: error: ‘::wcstoull’ has not been declared
/usr/include/c++/4.4/cwchar:266: error: ‘__gnu_cxx::wcstold’ has not been declared
/usr/include/c++/4.4/cwchar:267: error: ‘__gnu_cxx::wcstoll’ has not been declared
/usr/include/c++/4.4/cwchar:268: error: ‘__gnu_cxx::wcstoull’ has not been declared
In file included from /usr/include/c++/4.4/bits/char_traits.h:42,
                 from /usr/include/c++/4.4/string:42,
                 from ./inc/ttchq.h:5,
                 from src/main.cc:1:
/usr/include/c++/4.4/bits/postypes.h:228: error: ‘mbstate_t’ was not declared in this scope
/usr/include/c++/4.4/bits/postypes.h:228: error: template argument 1 is invalid
/usr/include/c++/4.4/bits/postypes.h:228: error: invalid type in declaration before ‘;’ token
/usr/include/c++/4.4/bits/postypes.h:230: error: ‘mbstate_t’ was not declared in this scope
/usr/include/c++/4.4/bits/postypes.h:230: error: template argument 1 is invalid
/usr/include/c++/4.4/bits/postypes.h:230: error: invalid type in declaration before ‘;’ token
In file included from /usr/include/c++/4.4/string:42,
                 from ./inc/ttchq.h:5,
                 from src/main.cc:1:
/usr/include/c++/4.4/bits/char_traits.h:70: error: ‘mbstate_t’ in namespace ‘std’ does not name a type
/usr/include/c++/4.4/bits/char_traits.h:243: error: ‘mbstate_t’ does not name a type
/usr/include/c++/4.4/bits/char_traits.h:314: error: ‘mbstate_t’ does not name a type
/usr/include/c++/4.4/bits/char_traits.h: In static member function ‘static int std::char_traits<wchar_t>::compare(const wchar_t*, const wchar_t*, size_t)’:

论坛徽章:
0
2 [报告]
发表于 2011-01-24 09:36 |只看该作者
会不会缺少什么宏?

论坛徽章:
0
3 [报告]
发表于 2011-01-24 13:38 |只看该作者
应该是路径什么的有问题吧

论坛徽章:
0
4 [报告]
发表于 2011-10-27 10:58 |只看该作者
请问这个问题解决了吗?

论坛徽章:
0
5 [报告]
发表于 2011-10-27 11:10 |只看该作者
这个问题 我们也遇到了 已经解决了   估计是因为 头文件的依赖顺序的问题 导致的

把 json 库 放在 /usr/local/include/ 目录下 然后
#include "json/json.h"

这样包含好像就可以编译通过

论坛徽章:
0
6 [报告]
发表于 2012-11-22 11:14 |只看该作者
回复下老帖,昨天晚上被整了好久,发现是json头文件和自己的头文件不能直接放一起,要把整个include目录下的json目录整体放到自己工程的include目录下

论坛徽章:
0
7 [报告]
发表于 2012-12-16 19:55 |只看该作者
jsoncpp库在处理字符串数组的 时候会对数组重新排序,建议用cajun.我也是在一个项目中发现的这个问题,换的cajun

论坛徽章:
0
8 [报告]
发表于 2012-12-17 21:00 |只看该作者
解决了没有?怎么解决的?

论坛徽章:
0
9 [报告]
发表于 2013-07-03 16:31 |只看该作者
我来给这个问题做个终结吧......将json/***.h整目录拷贝至/usr/local/include. 就可已解决这个错误了.具体的我也不清楚.

感谢5楼.五楼说的是对的.:wink:

论坛徽章:
0
10 [报告]
发表于 2013-08-06 09:37 |只看该作者
我发现 了问题在哪里了。


在jsoncpp的头文件中有一个features.h文件,这个文件在/usr/include下也有一个,我想应该是由于这个文件的冲突而形成 这个问题出现,如果在头文件引用 时通过json/...h的方式那么就不冲突也就是没有问题了

我想是这样的了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP