C++编译jsoncpp库

下载
https://github.com/hailong0715/jsoncpp/tree/master

windows编译工程
jsoncpp-master\makefiles\vs71

1.msvcprtd.lib(MSVCP140D.dll) : error LNK2005
解决办法:
(1).工程(Project)->属性(Properties)->配置属性(Configuration Properties)->c/c++->代码生成(Code Generation)->运行时库(Use run-time library)->多线程调试DLL(/MDd)(Multithreaded DLL/Debug Multithreaded DLL)
编译库的工程和自己当前开发的工程,都要使用同样的设置。也就是json对应的.lib文件是分模式(Debug或Release)的,两种编译模式在两个工程配置中需要保持一致。
(2).如果两种模式的工程配置是一致的但是还是无法解决,就需要忽略出问题的库文件了。方法如下:
工程(Project)->属性(Properties)->配置属性(Configuration Properties)->链接器->输入->忽略特定库中添加重定义的库文件,这里是msvcprtd.lib和LIBCMTD.lib。

2.error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”
Debug工程使用了Release的库文件。
如果出现 error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”。
那就是Release使用了Debug的库文件。


linux

undefined reference to `Json::Value::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
编译版本和开发环境部匹配,需要重新编译库 

python amalgamate.py
sudo yum install cmake
mkdir -p build/debug
cd build/debug
cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" ../..
make

如果报错
./jsoncpp_test: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./jsoncpp_test)

find / -name libstdc++.so.*
strings /lib64/libstdc++.so.6.0.28|grep GLIBCXX
cd /lib64
ls -l libstdc*
mv libstdc++.so.6 libstdc++.so.6_bak2
sudo ln -s libstdc++.so.6.0.28 libstdc++.so.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值