我是按照网上的流程做的 请看链接
http://www.cnblogs.com/ppboy_dxh/archive/2011/03/03/1970290.html
我选择的是方法2...
1.我在vs2012 建了一个MFC 项目,取名为test2
2.我从网上下载了 jsoncpp 并且 打开 jsoncpp-src-0.5.0\makefiles\vs71目录下的jsoncpp.sln,会出现三个Project:jsontest, lib_json, test_lib_json
3. 在lib_json上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation, 选择多线程 MTD
4.点击生成 解决方案,然后将生成好的 json_vc71_libmtd.lib 和 include\json 目录下的.h 文件拷贝到工程目录下
5.在test2 工程右击 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation, 选择多线程 MTD
6.在工程名上 右击-->Properties-->Configuration Properties-->Linker-->Input, 在Additional Dependencies里填写json_vc71_libmtd.lib
7.我有一处代码需要用到json 解析
Json::Reader reader;
Json::Value root;
if (!reader.parse(rep, root, false))
{
//return;
}
8.点击 生成 之后,就一直报错
当工程选择的是MTD 时...
:\program files (x86)\vc\atlmfc\include\afxver_.h(81): fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds
当工程选择的是 MD 时
json_vc71_libmtd.lib(json_value.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>json_vc71_libmtd.lib(json_reader.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>json_vc71_libmtd.lib(json_writer.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>msvcprtd.lib(MSVCP110D.dll) : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
1>msvcprtd.lib(MSVCP110D.dll) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
1>msvcprtd.lib(MSVCP110D.dll) : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
1>msvcprtd.lib(MSVCP110D.dll) : error LNK2005: "public: __thiscall std::locale::id::id(unsigned int)" (??0id@locale@std@@QAE@I@Z) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
1>msvcprtd.lib(MSVCP110D.dll) : error LNK2005: "public: struct std::_Iterator_base12 * * __thiscall std::_Container_base12::_Getpfirst(void)const " (?_Getpfirst@_Container_base12@std@@QBEPAPAU_Iterator_base12@2@XZ) 已经在 json_vc71_libmtd.lib(json_value.obj) 中定义
1>libcpmtd.lib(locale0.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(locale0.obj) : error LNK2005: "void __cdecl std::_Facet_Register(class std::_Facet_base *)" (?_Facet_Register@std@@YAXPAV_Facet_base@1@@Z) 已经在 msvcprtd.lib(locale0_implib.obj) 中定义
1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" (?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Init(bool)" (?_Init@locale@std@@CAPAV_Locimp@12@_N@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *)" (?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@PBD@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)" (?_Locinfo_dtor@_Locinfo@std@@SAXPAV12@@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(ios.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(ios.obj) : error LNK2005: "public: static void __cdecl std::ios_base::_Addstd(class std::ios_base *)" (?_Addstd@ios_base@std@@SAXPAV12@@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(ios.obj) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(iosptrs.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(locale.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(xlock.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(xthrow.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(xthrow.obj) : error LNK2005: "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(xthrow.obj) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPBD@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(xthrow.obj) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPBD@Z) 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>libcpmtd.lib(wlocale.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(xlocale.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(xdateord.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(HttpClient.obj 中)
1>libcpmtd.lib(xwctomb.obj) : error LNK2005: __Getcvt 已经在 msvcprtd.lib(MSVCP110D.dll) 中定义
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount 已经在 msvcrtd.lib(MSVCR110D.dll) 中定义
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __calloc_dbg 已经在 msvcrtd.lib(MSVCR110D.dll) 中定义
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __free_dbg 已经在 msvcrtd.lib(MSVCR110D.dll) 中定义
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __recalloc 已经在 MSVCRT.lib(MSVCR110.dll) 中定义
1>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall std::bad_cast::bad_cast(class std::bad_cast const &)" (??0bad_cast@std@@QAE@ABV01@@Z) 已经在 msvcrtd.lib(MSVCR110D.dll) 中定义
.
.
.
.
1>LINK : warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
1>D:\tbanana\Test2\Debug\Test2.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========
--------------------- 反正是各种错 不管选择哪种-----------------
然后很无奈的是 MFC 没有自带的json解析器。所以我想知道的是
1.以上的错误如何解决?
2.有么有json解析算法?