Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2012, 15:29   #1
zhekay
 
Регистрация: 10.12.2010
Сообщений: 4
По умолчанию JsonCpp

Доброго всем дня
Задача такая: на входе xml, нужно распарсить

Посоветовали использовать библиотеку JsonCpp и уже пол дня не могу его подружить с Visual Studio 2008
Начал с того, что открыл в вижуале файл sln из папки makefiles\vs71 (идет вместе с выкаченной библиотекой), появился мастер конвертирования в версию под 2008, затем собрал, появилась папка build, где я нашел папку build\vs71\debug\lib_json а в ней json_vc71_libmtd.lib ибо других либов просто нету. Довольный, что я получил то, что нужно стал этот либ подключать в том проекте, где он собсно и требовался.
То есть, для начала указал папку с заголовочными файлами (Tools->Options->Project and Solutions->VC++ Directories->Show directories for->Include files) в общем добавил путь к файлам .h
Затем в том же окне (Show directories for->Library Files) указал путь к либам
Ну и правой кнопкой по проекту->Properties->Linker->Input->Additional Dependencies прописал название скомпилированного ранее либа

В итоге ничего не линкуется. Кто-нибудь знает как пофиксить, или хотя бы что можно использовать вместо jsoncpp, чтобы при подключении не было столько гемора?

Последний раз редактировалось zhekay; 05.08.2012 в 15:31.
zhekay вне форума Ответить с цитированием
Старый 05.08.2012, 19:46   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
В итоге ничего не линкуется. Кто-нибудь знает как пофиксить, или хотя бы что можно использовать вместо jsoncpp, чтобы при подключении не было столько гемора?
Телепаты в отпуске. Ошибки в студию.
p51x вне форума Ответить с цитированием
Старый 05.08.2012, 20:28   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

zhekay

Задача такая: на входе xml, нужно распарсить

Посоветовали использовать библиотеку JsonCpp


Не нужны никакие jsoncpp, в винде есть свой парсер.
Гоогли C++ MSXML
Rififi вне форума Ответить с цитированием
Старый 20.08.2015, 14:26   #4
Gekan
Пользователь
 
Регистрация: 29.06.2012
Сообщений: 39
По умолчанию

Всем привет.
Ребята, помогите с тем же вопросом.
Задача состоит в том, чтобы записать результаты работы программы в файл формата json.
Сделал вроде бы всё так же, как и автор данной темы (Visual Studio 2012).
j1.jpg
j2.jpg
В результате такие ошибки.
Код:
1>------ Построение начато: проект: Regression, Конфигурация: Debug Win32 ------
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Json::Value::Value(enum Json::ValueType)" (??0Value@Json@@QAE@W4ValueType@1@@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Json::Value::Value(int)" (??0Value@Json@@QAE@H@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Json::Value::Value(char const *)" (??0Value@Json@@QAE@PBD@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Json::Value::~Value(void)" (??1Value@Json@@QAE@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Json::Value & __thiscall Json::Value::operator=(class Json::Value const &)" (??4Value@Json@@QAEAAV01@ABV01@@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Json::Value & __thiscall Json::Value::append(class Json::Value const &)" (?append@Value@Json@@QAEAAV12@ABV12@@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Json::Value & __thiscall Json::Value::operator[](char const *)" (??AValue@Json@@QAEAAV01@PBD@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl Json::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Json::Value const &)" (??6Json@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@ABVValue@0@@Z) в функции _main
1>C:\Users\Jeka\Documents\Visual Studio 2012\Projects\Regression\Debug\Regression.exe : fatal error LNK1120: неразрешенных внешних элементов: 8
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Gekan вне форума Ответить с цитированием
Старый 20.08.2015, 17:00   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Каталоги вы прописали, а саму либу подключили?
p51x вне форума Ответить с цитированием
Старый 20.08.2015, 17:20   #6
Gekan
Пользователь
 
Регистрация: 29.06.2012
Сообщений: 39
По умолчанию

Пытался воспроизвести пример отсюда:
http://stackoverflow.com/questions/4...iting-to-files
Потому и подключил только заголовочный файл:
Код:
#include<json/writer.h>
Я не особо разбираюсь, но попробовал так:
Проект-Добавить существующий элемент и выбрал файл json_vc71_libmtd.lib. В итоге он показался среди файлов ресурсов.
И получил такое:
Код:
1>------ Построение начато: проект: Regression, Конфигурация: Debug Win32 ------
1>  main.cpp
1>json_vc71_libmtd.lib(json_value.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MTd_StaticDebug" не соответствует значению "MDd_DynamicDebug" в main.obj
1>json_vc71_libmtd.lib(json_writer.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MTd_StaticDebug" не соответствует значению "MDd_DynamicDebug" в main.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>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(locale0.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MTd_StaticDebug" не соответствует значению "MDd_DynamicDebug" в main.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(iosptrs.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MTd_StaticDebug" не соответствует значению "MDd_DynamicDebug" в main.obj
1>libcpmtd.lib(locale.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MTd_StaticDebug" не соответствует значению "MDd_DynamicDebug" в main.obj
1>libcpmtd.lib(locale.obj) : error LNK2005: "public: static unsigned int __cdecl std::codecvt<char,char,int>::_Getcat(class std::locale::facet const * *,class std::locale const *)" (?_Getcat@?$codecvt@DDH@std@@SAIPAPBVfacet@locale@2@PBV42@@Z) уже определен в msvcprtd.lib(MSVCP110D.dll)
1>libcpmtd.lib(locale.obj) : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sbumpc(void)" (?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ) уже определен в msvcprtd.lib(MSVCP110D.dll)
1>libcpmtd.lib(locale.obj) : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sgetc(void)" (?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ) уже определен в msvcprtd.lib(MSVCP110D.dll)
1>libcpmtd.lib(xlock.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MTd_StaticDebug" не соответствует значению "MDd_DynamicDebug" в main.obj
...
... тут я удалил часть, очень много символов
...
1>LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush уже определен в MSVCRTD.lib(MSVCR110D.dll)
1>LIBCMTD.lib(printf.obj) : error LNK2005: _printf уже определен в MSVCRTD.lib(MSVCR110D.dll)
1>LINK : warning LNK4098: библиотека по умолчанию "MSVCRTD" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
1>LINK : warning LNK4098: библиотека по умолчанию "LIBCMTD" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
1>C:\Users\Jeka\Documents\Visual Studio 2012\Projects\Regression\Debug\Regression.exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Или не так это делается?
Gekan вне форума Ответить с цитированием
Старый 20.08.2015, 19:54   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы на пути к выздоровлению. Следующий шаг - научится читать, что вам пишут компилятор и линковщик. А они вам прямым текстом говорят, что ваш проект и либа собраны с разными настройками для стандартной либы - найди опцию и соберите все в одном ключе.
p51x вне форума Ответить с цитированием
Старый 20.08.2015, 20:07   #8
Gekan
Пользователь
 
Регистрация: 29.06.2012
Сообщений: 39
По умолчанию

Ха, спасибо. Не скажу, что до конца понимаю, что делаю, но интуитивно научился блуждать.
Вот такой трюк решает проблему:
j3.jpg
Gekan вне форума Ответить с цитированием
Старый 20.08.2015, 23:51   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну или либу пересобрать со статикой...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск