使用 Boost 在 Visual Studio10 上编译和使用 JSONCPP

Posted

技术标签:

【中文标题】使用 Boost 在 Visual Studio10 上编译和使用 JSONCPP【英文标题】:Compiling and Using JSONCPP on Visual Studio10 with Boost 【发布时间】:2011-02-07 02:08:26 【问题描述】:

我最近使用 VS71 生成文件编译了 SVN 版本的 JSONCPP。它有效,但我收到很多链接器错误

1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: __int64 __thiscall std::basic_streambuf >::sputn(char const *,__int64)" (?sputn@ ?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: void __thiscall std::basic_ostream >::_Osfx(void)" (?_Osfx@?$basic_ostream@ DU?$char_traits@D@std@@@std@@QAEXXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: class std::basic_ostream> * __thiscall std::basic_ios>::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@ XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:void __thiscall std::basic_streambuf >::_Init(void)”(?_Init@?$basic_streambuf@ DU?$char_traits@D@std@@@std@@IAEXXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:__thiscall std::basic_streambuf >::basic_streambuf >( void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: __thiscall std::basic_ostream >::basic_ostream >(类 std::basic_streambuf > *,bool)" (??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf @DU?$char_traits@D@std@@@1@_N@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:__thiscall std::basic_ios >::basic_ios >( void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: char __thiscall std::basic_ios >::fill(void)const" (?fill@?$basic_ios @DU?$char_traits@D@std@@@std@@QBEDXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::_Pninc(void)”(?_Pninc@?$basic_streambuf @DU?$char_traits@D@std@@@std@@IAEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:void __thiscall std::basic_streambuf::setp(char *,char *,char *)”( ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:void __thiscall std::basic_streambuf >::setp(char *,char *)”(?setp@ ?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z) 已经在 J​​SONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:void __thiscall std::basic_streambuf >::pbump(int)”(?pbump@?$basic_streambuf@ DU?$char_traits@D@std@@@std@@IAEXH@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::_Gninc(void)”(?_Gninc@?$basic_streambuf @DU?$char_traits@D@std@@@std@@IAEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::epptr(void)const”(?epptr@?$ basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:void __thiscall std::basic_streambuf::setg(char *,char *,char *)”( ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:void __thiscall std::basic_streambuf >::gbump(int)”(?gbump@?$basic_streambuf@ DU?$char_traits@D@std@@@std@@IAEXH@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::egptr(void)const”(?egptr@?$ basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::pptr(void)const”(?pptr@?$ basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::pbase(void)const”(?pbase@?$ basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::gptr(void)const” (?gptr@?$ basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:char * __thiscall std::basic_streambuf >::eback(void)const”(?eback@?$ basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: int __thiscall std::basic_streambuf >::sputc(char)" (?sputc@?$basic_streambuf@ DU?$char_traits@D@std@@@std@@QAEHD@Z) 已经在 J​​SONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: class std::basic_ostream> & __thiscall std::basic_ostream >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) 已经在 J​​SONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: class std::basic_ostream> & __thiscall std::basic_ostream >::operatormsvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: virtual __thiscall std::basic_ostream >::~basic_ostream >(void)" (??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: class std::basic_streambuf > * __thiscall std::basic_ios>::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@ XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: void __thiscall std::basic_ios >::setstate(int,bool)" (?setstate@?$ basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: virtual __thiscall std::basic_ios >::~basic_ios >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:虚拟 void __thiscall std::basic_streambuf >::imbue(class std::locale const &)”( ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:虚拟 int __thiscall std::basic_streambuf >::sync(void)”(?sync@?$basic_streambuf @DU?$char_traits@D@std@@@std@@MAEHXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:虚拟类 std::basic_streambuf > * __thiscall std::basic_streambuf >::setbuf(char *,__int64)" (?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PAD_J@Z) 已经在 J​​SONCPP.lib(json_writer.对象) 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:虚拟 __int64 __thiscall std::basic_streambuf>::xsputn(char const *,__int64)”(?xsputn @?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JPBD_J@Z) 已经在 J​​SONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:虚拟 __int64 __thiscall std::basic_streambuf>::xsgetn(char *,__int64)”(?xsgetn@ ?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JPAD_J@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:虚拟 int __thiscall std::basic_streambuf >::uflow(void)”(?uflow@?$basic_streambuf @DU?$char_traits@D@std@@@std@@MAEHXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll):错误 LNK2005:“受保护:虚拟 __int64 __thiscall std::basic_streambuf>::showmanyc(void)”(?showmanyc@?$basic_streambuf @DU?$char_traits@D@std@@@std@@MAE_JXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: virtual void __thiscall std::basic_streambuf >::_Unlock(void)" (?_Unlock@?$basic_streambuf @DU?$char_traits@D@std@@@std@@UAEXXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: virtual void __thiscall std::basic_streambuf >::_Lock(void)" (?_Lock@?$basic_streambuf @DU?$char_traits@D@std@@@std@@UAEXXZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: virtual __thiscall std::basic_streambuf >::~basic_streambuf >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: __int64 __thiscall std::ios_base::width(__int64)" (?width@ios_base@std@@QAE_J_J@Z) 已经在 J​​SONCPP.lib( json_writer.obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: __int64 __thiscall std::ios_base::width(void)const" (?width@ios_base@std@@QBE_JXZ) 已经在 J​​SONCPP.lib(json_writer .obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: int __thiscall std::ios_base::flags(void)const" (?flags@ios_base@std@@QBEHXZ) 已经在 J​​SONCPP.lib(json_writer .obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: bool __thiscall std::ios_base::good(void)const" (?good@ios_base@std@@QBE_NXZ) 已经在 J​​SONCPP.lib(json_writer .obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: int __thiscall std::ios_base::rdstate(void)const" (?rdstate@ios_base@std@@QBEHXZ) 已经在 J​​SONCPP.lib(json_writer .obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std @@QAEPAV123@XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: void __thiscall std::locale::facet::_Incref(void)" (?_Incref@facet@locale@std@@QAEXXZ) 已经在 J​​SONCPP 中定义.lib(json_writer.obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: __thiscall std::locale::id::operator unsigned int(void)" (??Bid@locale@std@@QAEIXZ) 已在 JSONCPP 中定义.lib(json_writer.obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) 已经在 J​​SONCPP.lib(json_reader.对象) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) 已在 JSONCPP.lib(json_reader) 中定义.obj) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: void __thiscall std::_Container_base0::_Orphan_all(void)" (?_Orphan_all@_Container_base0@std@@QAEXXZ) 已经在 J​​SONCPP.lib(json_writer.对象) 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: bool __thiscall std::basic_istream >::_Ipfx(bool)" (?_Ipfx@?$basic_istream@ DU?$char_traits@D@std@@@std@@QAE_N_N@Z) 已在 JSONCPP.lib(json_reader.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: int __thiscall std::basic_streambuf >::snextc(void)" (?snextc@?$basic_streambuf@ DU?$char_traits@D@std@@@std@@QAEHXZ) 已在 JSONCPP.lib(json_reader.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: int __thiscall std::basic_streambuf >::sgetc(void)" (?sgetc@?$basic_streambuf@ DU?$char_traits@D@std@@@std@@QAEHXZ) 已在 JSONCPP.lib(json_reader.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: class std::locale __thiscall std::ios_base::getloc(void)const" (?getloc@ios_base@std@@QBE?AVlocale@2@ XZ) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: static unsigned int __cdecl std::ctype::_Getcat(class std::locale::facet const * *,class std::locale const *)" (?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z) 已在 JSONCPP.lib(json_writer.obj) 中定义 1>msvcprt.lib(MSVCP100.dll) : 错误 LNK2005: "public: bool __thiscall std::ctype::is(short,char)const" (?is@?$ctype@D@std@@QBE_NFD @Z) 已在 JSONCPP.lib(json_reader.obj) 中定义 1>libcpmt.lib(ios.obj) : 错误 LNK2005: "public: static void __cdecl std::ios_base::_Addstd(class std::ios_base *)" (?_Addstd@ios_base@std@@SAXPAV12@@Z)已在 msvcprt.lib(MSVCP100.dll) 中定义 1>libcpmt.lib(ios.obj) : 错误 LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z)已在 msvcprt.lib(MSVCP100.dll) 中定义 1>libcpmt.lib(locale0.obj) : 错误 LNK2005: "private: static void __cdecl std::locale::facet::_Facet_Register(class std::locale::facet *)" (?_Facet_Register@facet@locale@ std@@CAXPAV123@@Z) 已在 msvcprt.lib(locale0_implib.obj) 中定义 1>libcpmt.lib(locale0.obj):错误 LNK2005:“私有:静态类 std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)”(?_Getgloballocale@locale@std@@CAPAV_Locimp@ 12@XZ) 已在 msvcprt.lib(MSVCP100.dll) 中定义 1>libcpmt.lib(locale0.obj) : 错误 LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)" (?_Locinfo_dtor@_Locinfo@st​​d@@SAXPAV12@@Z)已在 msvcprt.lib(MSVCP100.dll) 中定义 1>libcpmt.lib(locale0.obj) : 错误 LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *)" (?_Locinfo_ctor@_Locinfo@st​​d@@SAXPAV12 @PBD@Z) 已在 msvcprt.lib(MSVCP100.dll) 中定义 1>libcpmt.lib(locale0.obj):错误 LNK2005:“私有:静态类 std::locale::_Locimp * __cdecl std::locale::_Init(void)”(?_Init@locale@std@@CAPAV_Locimp@ 12@XZ) 已在 msvcprt.lib(MSVCP100.dll) 中定义 1>libcpmt.lib(xlock.obj) : 错误 LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) 已经在 msvcprt.lib( MSVCP100.dll) 1>libcpmt.lib(xlock.obj) : 错误 LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) 已经在 msvcprt.lib(MSVCP100 .dll) 1>LIBCMT.lib(setlocal.obj) : 错误 LNK2005: __configthreadlocale 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(hooks.obj) : 错误 LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(invarg.obj) : 错误 LNK2005: __invoke_watson 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(lconv.obj) : 错误 LNK2005: _localeconv 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(typinfo.obj) : 错误 LNK2005: "public: void __thiscall type_info::_type_info_dtor_internal_method(void)" (?_type_info_dtor_internal_method@type_info@@QAEXXZ) 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(typinfo.obj) : 错误 LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 MSVCRT.lib(ti_inst .obj) 1>LIBCMT.lib(typinfo.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已在 MSVCRT 中定义.lib(ti_inst.obj) 1>LIBCMT.lib(mlock.obj) : 错误 LNK2005: __unlock 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(mlock.obj) : 错误 LNK2005: __lock 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(winxfltr.obj) : 错误 LNK2005: __XcptFilter 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(crt0dat.obj) : 错误 LNK2005: __initterm_e 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(crt0dat.obj) : 错误 LNK2005: _exit 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(crt0dat.obj) : 错误 LNK2005: __exit 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(crt0dat.obj) : 错误 LNK2005: __cexit 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(crt0dat.obj) : 错误 LNK2005: __amsg_exit 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LIBCMT.lib(crt0init.obj) : 错误 LNK2005: ___xi_a 已在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMT.lib(crt0init.obj) : 错误 LNK2005: ___xi_z 已在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMT.lib(crt0init.obj) : 错误 LNK2005: ___xc_a 已在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMT.lib(crt0init.obj) : 错误 LNK2005: ___xc_z 已在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMT.lib(crt0.obj) : 错误 LNK2005: _mainCRTStartup 已在 MSVCRT.lib(crtexe.obj) 中定义 1>LIBCMT.lib(errmode.obj) : 错误 LNK2005: ___set_app_type 已在 MSVCRT.lib(MSVCR100.dll) 中定义 1>LINK : 警告 LNK4098: defaultlib 'MSVCRT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library 1>LINK : 警告 LNK4098: defaultlib 'LIBCMT' 与其他库的使用冲突;使用 /NODEFAULTLIB:library

此外,我需要将 boost::multi_array 与它一起使用,但是当我#define _ITERATOR_DEBUG_LEVEL 0 时,它与 JSONCPP 的 _ITERATOR_DEBUG_LEVEL 2 冲突(需要这个才能让 boost::multi_array 调整大小才能工作)。我该如何解决这个问题?

【问题讨论】:

_ITERATOR_DEBUG_LEVEL 0 不是 boost::multi_array 中的 resize 方法所必需的。如果您需要该定义,那么您正在做的事情会调用未定义的行为(迭代器调试会向您显示存在未定义的行为)。 我需要使用它,因为 VC2010 在调整大小时会倾斜。这是一个线程social.msdn.microsoft.com/Forums/en/vcgeneral/thread/…。 【参考方案1】:

所有错误都表明您的构建错误C runtime settings。确保您的所有目标文件、库等都使用相同的运行时设置进行编译,即:

多线程 (/MT) 多线程 DLL (/MD) 多线程调试 (/MTd) 多线程调试 DLL (/MDd)

如果所有项目的此设置不同,则您违反了一个定义规则(因为每个 C 运行时定义不同),这将导致您看到的行为。

我的猜测是 JSONCPP 库正在构建假设标准库的静态版本 (/MT),而您的代码使用 Visual Studio 默认值,即动态链接版本 (/MD)。

您可以在 Visual Studio 中更改此设置,方法是选择项目的项目属性,转到 C/C++ -> 代码生成,然后更改运行时下拉框。

【讨论】:

我使用 /MTd 进行了 VS2010 的调试控制台测试应用程序,它运行良好。

以上是关于使用 Boost 在 Visual Studio10 上编译和使用 JSONCPP的主要内容,如果未能解决你的问题,请参考以下文章

Boost 库和 Visual Studio 2013

Visual Studio 2019安装boost 1.7.0库

使用 Boost 在 Visual Studio10 上编译和使用 JSONCPP

将Boost库添加到Visual Studio 2017

如何使用 Visual Studio 2010 在 Windows 上使用 Open MPI 构建 boost::mpi 库

Android Studio1.4上使用butterknife zelezny