Я загрузил и установил библиотеку jsoncpp. Затем я пытаюсь использовать библиотеку в моем приложении:Jsoncpp - очень простые тестовые сбои, когда Json :: reader выходит из области
#include <json/json.h>
void parseJson() {
Json::Reader reader;
}
int main(int argc, char ** argv) {
parseJson();
exit(0);
}
Программа компилируется и ссылки нормально, но он падает с SIGSEGV при запуске. Обратный ход gdb выглядит так:
(gdb) bt
#0 0x0000003a560b7672 in __gnu_cxx::__exchange_and_add() from /usr/lib64/libstdc++.so.6
#1 0x00000000004031e9 in std::string::_Rep::_M_dispose (this=0xffffffffffffffe9, [email protected])
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/basic_string.h:232
#2 0x0000000000403236 in ~basic_string (this=0x7fffbfe60fb0)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/basic_string.h:478
#3 0x00000000004038d4 in ~Reader (this=0x7fffbfe60eb0) at /private/joaho/Parser/opm-parser/external/json/json-cpp/include/json/reader.h:23
#4 0x0000000000402990 in parseJson() at /private/joaho/Parser/opm-parser/opm/parser/eclipse/ExternalTests/ExternalTests.cpp:51
#5 0x00000000004029ab in main (argc=1, argv=0x7fffbfe610c8)
at /home/user/Parser/opm-parser/opm/parser/eclipse/ExternalTests/ExternalTests.cpp:56
I.e. мне кажется, что он врезался в деструктор. Насколько я могу судить, Json :: Reader не имеет собственного dstructor, поэтому это должен быть деструктор по умолчанию. Как вы можете видеть, я запускаю довольно старую версию g ++ - может быть, проблема?
При компиляции с GCC версии 4.8.1 на Debian/Sid (так libjsoncpp-DEV '0.6.0 ~ rc2-3') как' г ++ - 4.8 -g - Wall -I/usr/include/jsoncpp/esjson.cc -ljsoncpp -o esjson' ваша программа скомпилирована без предупреждений и не сбой при запуске. –
У меня была эта точная проблема в VS2013. Это произошло из-за отсутствия ссылки на отладочную версию библиотеки при выполнении отладочной сборки. – matth
Я видел эту проблему в небольшом проекте кода спагетти, у меня есть статичные ссылки в webrtc (который ссылается на jsoncpp), а также динамически включает jsoncpp через другую библиотеку. – mpr