open-source-parsers / jsoncpp

A C++ library for interacting with JSON.
Other
8.06k stars 2.63k forks source link

Failed to compile with C++23 #1526

Closed TheCompez closed 7 months ago

TheCompez commented 7 months ago

The library is not able to compile and link with the C++23 standard. Both in GCC13 and Clang17.

cmake -DCMAKE_CXX_COMPILER="/opt/homebrew/Cellar/llvm/17.0.6/bin/clang-17" -DCMAKE_CXX_STANDARD=23 ..

make  
[  5%] Building CXX object src/lib_json/CMakeFiles/jsoncpp_lib.dir/json_reader.cpp.o
[ 11%] Building CXX object src/lib_json/CMakeFiles/jsoncpp_lib.dir/json_value.cpp.o
[ 17%] Building CXX object src/lib_json/CMakeFiles/jsoncpp_lib.dir/json_writer.cpp.o
[ 23%] Linking CXX shared library ../../lib/libjsoncpp.dylib
ld: Undefined symbols:
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::find(char, unsigned long) const, referenced from:
      Json::(anonymous namespace)::valueToString(double, bool, unsigned int, Json::PrecisionType) in json_writer.cpp.o
      Json::(anonymous namespace)::valueToString(double, bool, unsigned int, Json::PrecisionType) in json_writer.cpp.o
  std::__1::locale::use_facet(std::__1::locale::id&) const, referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::__1::ios_base::getloc() const, referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::logic_error::logic_error(char const*), referenced from:
      std::length_error::length_error[abi:ue170006](char const*) in json_reader.cpp.o
  std::length_error::~length_error(), referenced from:
      std::__1::__throw_length_error[abi:ue170006](char const*) in json_reader.cpp.o
  std::bad_array_new_length::bad_array_new_length(), referenced from:
      std::__throw_bad_array_new_length[abi:ue170006]() in json_reader.cpp.o
  std::bad_array_new_length::~bad_array_new_length(), referenced from:
      std::__throw_bad_array_new_length[abi:ue170006]() in json_reader.cpp.o
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::erase(unsigned long, unsigned long), referenced from:
      Json::(anonymous namespace)::valueToString(double, bool, unsigned int, Json::PrecisionType) in json_writer.cpp.o
      Json::(anonymous namespace)::valueToString(double, bool, unsigned int, Json::PrecisionType) in json_writer.cpp.o
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::append(char const*), referenced from:
      Json::Reader::decodeDouble(Json::Reader::Token&, Json::Value&) in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::OurReader::readObject(Json::OurReader::Token&) in json_reader.cpp.o
      Json::OurReader::decodeDouble(Json::OurReader::Token&, Json::Value&) in json_reader.cpp.o
      Json::OurReader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::OurReader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::OurReader::getFormattedErrorMessages() const in json_reader.cpp.o
      ...
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::append(char const*, unsigned long), referenced from:
      Json::Reader::addComment(char const*, char const*, Json::CommentPlacement) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::OurReader::addComment(char const*, char const*, Json::CommentPlacement) in json_reader.cpp.o
      Json::OurReader::decodeString(Json::OurReader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      ...
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::assign(char const*), referenced from:
      Json::StreamWriterBuilder::newStreamWriter() const in json_writer.cpp.o
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::insert(unsigned long, char const*), referenced from:
      Json::Reader::decodeDouble(Json::Reader::Token&, Json::Value&) in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::OurReader::decodeDouble(Json::OurReader::Token&, Json::Value&) in json_reader.cpp.o
      Json::OurReader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::OurReader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::StyledWriter::writeCommentAfterValueOnSameLine(Json::Value const&) in json_writer.cpp.o
      ...
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::resize(unsigned long, char), referenced from:
      Json::codePointToUTF8(unsigned int) in json_reader.cpp.o
      Json::codePointToUTF8(unsigned int) in json_reader.cpp.o
      Json::codePointToUTF8(unsigned int) in json_reader.cpp.o
      Json::codePointToUTF8(unsigned int) in json_reader.cpp.o
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>>::overflow(int) in json_reader.cpp.o
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>>::str(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in json_reader.cpp.o
      Json::(anonymous namespace)::valueToString(double, bool, unsigned int, Json::PrecisionType) in json_writer.cpp.o
      Json::(anonymous namespace)::valueToString(double, bool, unsigned int, Json::PrecisionType) in json_writer.cpp.o
      ...
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::reserve(unsigned long), referenced from:
      Json::Reader::addComment(char const*, char const*, Json::CommentPlacement) in json_reader.cpp.o
      Json::Reader::normalizeEOL(char const*, char const*) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::OurReader::addComment(char const*, char const*, Json::CommentPlacement) in json_reader.cpp.o
      Json::OurReader::normalizeEOL(char const*, char const*) in json_reader.cpp.o
      Json::OurReader::decodeString(Json::OurReader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::valueToQuotedStringN(char const*, unsigned long, bool) in json_writer.cpp.o
      ...
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__grow_by(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long), referenced from:
      Json::Reader::parse(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, Json::Value&, bool) in json_reader.cpp.o
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::push_back(char), referenced from:
      Json::Reader::addComment(char const*, char const*, Json::CommentPlacement) in json_reader.cpp.o
      Json::Reader::addComment(char const*, char const*, Json::CommentPlacement) in json_reader.cpp.o
      Json::Reader::normalizeEOL(char const*, char const*) in json_reader.cpp.o
      Json::Reader::normalizeEOL(char const*, char const*) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      Json::Reader::decodeString(Json::Reader::Token&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) in json_reader.cpp.o
      ...
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&), referenced from:
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::readValue() in json_reader.cpp.o
      Json::Reader::addError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, Json::Reader::Token&, char const*) in json_reader.cpp.o
      Json::Reader::readObject(Json::Reader::Token&) in json_reader.cpp.o
      Json::Reader::readObject(Json::Reader::Token&) in json_reader.cpp.o
      Json::Reader::readObject(Json::Reader::Token&) in json_reader.cpp.o
      Json::Reader::readArray(Json::Reader::Token&) in json_reader.cpp.o
      ...
  std::__1::basic_istream<char, std::__1::char_traits<char>>::~basic_istream(), referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char>>-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_istream<char, std::__1::char_traits<char>>::~basic_istream(), referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char>>-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_istream<char, std::__1::char_traits<char>>::~basic_istream(), referenced from:
      Json::Reader::decodeDouble(Json::Reader::Token&, Json::Value&) in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_istringstream[abi:ue170006](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int) in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_istringstream() in json_reader.cpp.o
      Json::OurReader::decodeDouble(Json::OurReader::Token&, Json::Value&) in json_reader.cpp.o
      virtual thunk to std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_istringstream() in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_istringstream() in json_reader.cpp.o
      virtual thunk to std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_istringstream() in json_reader.cpp.o
      ...
  std::__1::basic_istream<char, std::__1::char_traits<char>>::operator>>(double&), referenced from:
      Json::Reader::decodeDouble(Json::Reader::Token&, Json::Value&) in json_reader.cpp.o
      Json::OurReader::decodeDouble(Json::OurReader::Token&, Json::Value&) in json_reader.cpp.o
  std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char>>&), referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::~sentry(), referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::__1::basic_ostream<char, std::__1::char_traits<char>>::~basic_ostream(), referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char>>-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_ostream<char, std::__1::char_traits<char>>::~basic_ostream(), referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char>>-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_ostream<char, std::__1::char_traits<char>>::~basic_ostream(), referenced from:
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_ostringstream() in json_reader.cpp.o
      virtual thunk to std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_ostringstream() in json_reader.cpp.o
      std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_ostringstream() in json_reader.cpp.o
      virtual thunk to std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_ostringstream() in json_reader.cpp.o
      std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_ostringstream[abi:ue170006]() in json_value.cpp.o
      ...
  std::__1::basic_ostream<char, std::__1::char_traits<char>>::operator<<(std::__1::basic_streambuf<char, std::__1::char_traits<char>>*), referenced from:
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::sync(), referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::imbue(std::__1::locale const&), referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::uflow(), referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::setbuf(char*, long), referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::xsgetn(char*, long), referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::xsputn(char const*, long), referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::showmanyc(), referenced from:
      vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::basic_streambuf(), referenced from:
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_istringstream[abi:ue170006](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int) in json_reader.cpp.o
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_ostringstream[abi:ue170006]() in json_value.cpp.o
      Json::writeString(Json::StreamWriter::Factory const&, Json::Value const&) in json_writer.cpp.o
  std::__1::basic_streambuf<char, std::__1::char_traits<char>>::~basic_streambuf(), referenced from:
      Json::Reader::decodeDouble(Json::Reader::Token&, Json::Value&) in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_istringstream[abi:ue170006](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int) in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_istringstream() in json_reader.cpp.o
      Json::OurReader::decodeDouble(Json::OurReader::Token&, Json::Value&) in json_reader.cpp.o
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_ostringstream() in json_reader.cpp.o
      virtual thunk to std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_istringstream() in json_reader.cpp.o
      ...
  std::__1::ctype<char>::id, referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::__1::locale::~locale(), referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::__1::ios_base::__set_badbit_and_consider_rethrow(), referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::__1::ios_base::init(void*), referenced from:
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_istringstream[abi:ue170006](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int) in json_reader.cpp.o
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_ostringstream[abi:ue170006]() in json_value.cpp.o
      Json::writeString(Json::StreamWriter::Factory const&, Json::Value const&) in json_writer.cpp.o
  std::__1::ios_base::clear(unsigned int), referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  std::__1::basic_ios<char, std::__1::char_traits<char>>::~basic_ios(), referenced from:
      Json::Reader::decodeDouble(Json::Reader::Token&, Json::Value&) in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_istringstream[abi:ue170006](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int) in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_istringstream[abi:ue170006](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int) in json_reader.cpp.o
      std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_istringstream() in json_reader.cpp.o
      Json::OurReader::decodeDouble(Json::OurReader::Token&, Json::Value&) in json_reader.cpp.o
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      Json::parseFromStream(Json::CharReader::Factory const&, std::__1::basic_istream<char, std::__1::char_traits<char>>&, Json::Value*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) in json_reader.cpp.o
      ...
  std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char>>(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&), referenced from:
      Json::Reader::getFormattedErrorMessages() const in json_reader.cpp.o
      Json::OurReader::readObject(Json::OurReader::Token&) in json_reader.cpp.o
      Json::OurReader::getFormattedErrorMessages() const in json_reader.cpp.o
  std::exception::~exception(), referenced from:
      Json::Exception::~Exception() in json_value.cpp.o
      Json::Exception::~Exception() in json_value.cpp.o
      Json::Exception::~Exception() in json_value.cpp.o
      Json::Exception::~Exception() in json_value.cpp.o
      Json::Exception::~Exception() in json_value.cpp.o
      Json::Exception::~Exception() in json_value.cpp.o
      Json::RuntimeError::~RuntimeError() in json_value.cpp.o
      Json::RuntimeError::~RuntimeError() in json_value.cpp.o
      ...
  std::terminate(), referenced from:
      ___clang_call_terminate in json_reader.cpp.o
  typeinfo for std::__1::basic_istream<char, std::__1::char_traits<char>>, referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char>>-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char>>-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
      typeinfo for std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  typeinfo for std::__1::basic_ostream<char, std::__1::char_traits<char>>, referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char>>-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char>>-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
      typeinfo for std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  typeinfo for std::__1::basic_streambuf<char, std::__1::char_traits<char>>, referenced from:
      typeinfo for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  typeinfo for std::length_error, referenced from:
      std::__1::__throw_length_error[abi:ue170006](char const*) in json_reader.cpp.o
  typeinfo for std::bad_array_new_length, referenced from:
      std::__throw_bad_array_new_length[abi:ue170006]() in json_reader.cpp.o
  typeinfo for std::exception, referenced from:
      typeinfo for Json::Exception in json_value.cpp.o
  vtable for __cxxabiv1::__class_type_info, referenced from:
      typeinfo for Json::CharReader::Factory in json_reader.cpp.o
      typeinfo for Json::CharReader in json_reader.cpp.o
      typeinfo for Json::Writer in json_writer.cpp.o
      typeinfo for Json::StreamWriter in json_writer.cpp.o
      typeinfo for Json::StreamWriter::Factory in json_writer.cpp.o
  vtable for __cxxabiv1::__si_class_type_info, referenced from:
      typeinfo for Json::CharReaderBuilder in json_reader.cpp.o
      typeinfo for std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
      typeinfo for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
      typeinfo for Json::OurCharReader in json_reader.cpp.o
      typeinfo for std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
      typeinfo for Json::Exception in json_value.cpp.o
      typeinfo for Json::RuntimeError in json_value.cpp.o
      ...
  vtable for std::length_error, referenced from:
      std::length_error::length_error[abi:ue170006](char const*) in json_reader.cpp.o
  virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char>>::~basic_istream(), referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char>>-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char>>::~basic_istream(), referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char>>-in-std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char>>::~basic_ostream(), referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char>>-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char>>::~basic_ostream(), referenced from:
      construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char>>-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>> in json_reader.cpp.o
  operator delete(void*), referenced from:
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      ...
  operator new(unsigned long), referenced from:
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::parse(char const*, char const*, Json::Value&, bool) in json_reader.cpp.o
      Json::Reader::readValue() in json_reader.cpp.o
      Json::Reader::readValue() in json_reader.cpp.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:ue170006]<0>(char const*) in json_reader.cpp.o
      Json::Reader::readObject(Json::Reader::Token&) in json_reader.cpp.o
      Json::Reader::readObject(Json::Reader::Token&) in json_reader.cpp.o
      Json::Reader::readObject(Json::Reader::Token&) in json_reader.cpp.o
      ...
  ___cxa_allocate_exception, referenced from:
      std::__throw_bad_array_new_length[abi:ue170006]() in json_reader.cpp.o
      std::__1::__throw_length_error[abi:ue170006](char const*) in json_reader.cpp.o
      Json::throwRuntimeError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in json_value.cpp.o
      Json::throwLogicError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in json_value.cpp.o
  ___cxa_begin_catch, referenced from:
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>>::overflow(int) in json_reader.cpp.o
      ___clang_call_terminate in json_reader.cpp.o
      void std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__init_with_sentinel[abi:ue170006]<std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>, std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>, std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>) in json_reader.cpp.o
      std::__1::deque<Json::Reader::ErrorInfo, std::__1::allocator<Json::Reader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
      std::__1::deque<Json::Reader::ErrorInfo, std::__1::allocator<Json::Reader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
      std::__1::deque<Json::OurReader::ErrorInfo, std::__1::allocator<Json::OurReader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
      std::__1::deque<Json::OurReader::ErrorInfo, std::__1::allocator<Json::OurReader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
      ...
  ___cxa_end_catch, referenced from:
      std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>>::overflow(int) in json_reader.cpp.o
      void std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__init_with_sentinel[abi:ue170006]<std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>, std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>, std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>) in json_reader.cpp.o
      std::__1::deque<Json::Reader::ErrorInfo, std::__1::allocator<Json::Reader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
      std::__1::deque<Json::OurReader::ErrorInfo, std::__1::allocator<Json::OurReader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
      std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ue170006]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in json_value.cpp.o
  ___cxa_free_exception, referenced from:
      std::__1::__throw_length_error[abi:ue170006](char const*) in json_reader.cpp.o
      Json::throwRuntimeError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in json_value.cpp.o
      Json::throwLogicError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in json_value.cpp.o
  ___cxa_guard_abort, referenced from:
      Json::CharReaderBuilder::validate(Json::Value*) const in json_reader.cpp.o
      Json::StreamWriterBuilder::validate(Json::Value*) const in json_writer.cpp.o
  ___cxa_guard_acquire, referenced from:
      Json::CharReaderBuilder::validate(Json::Value*) const in json_reader.cpp.o
      Json::Value::nullSingleton() in json_value.cpp.o
      Json::Value::operator[](unsigned int) in json_value.cpp.o
      Json::Value::operator[](unsigned int) const in json_value.cpp.o
      Json::Value::operator[](unsigned int) const in json_value.cpp.o
      Json::Value::resolveReference(char const*) in json_value.cpp.o
      Json::Value::resolveReference(char const*, char const*) in json_value.cpp.o
      ...
  ___cxa_guard_release, referenced from:
      Json::CharReaderBuilder::validate(Json::Value*) const in json_reader.cpp.o
      Json::Value::nullSingleton() in json_value.cpp.o
      Json::Value::operator[](unsigned int) in json_value.cpp.o
      Json::Value::operator[](unsigned int) const in json_value.cpp.o
      Json::Value::operator[](unsigned int) const in json_value.cpp.o
      Json::Value::resolveReference(char const*) in json_value.cpp.o
      Json::Value::resolveReference(char const*, char const*) in json_value.cpp.o
      ...
  ___cxa_pure_virtual, referenced from:
      vtable for Json::StreamWriter in json_writer.cpp.o
      vtable for Json::Writer in json_writer.cpp.o
      vtable for Json::StreamWriter::Factory in json_writer.cpp.o
  ___cxa_rethrow, referenced from:
      void std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__init_with_sentinel[abi:ue170006]<std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>, std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>, std::__1::istreambuf_iterator<char, std::__1::char_traits<char>>) in json_reader.cpp.o
      std::__1::deque<Json::Reader::ErrorInfo, std::__1::allocator<Json::Reader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
      std::__1::deque<Json::OurReader::ErrorInfo, std::__1::allocator<Json::OurReader::ErrorInfo>>::__add_back_capacity(unsigned long) in json_reader.cpp.o
  ___cxa_throw, referenced from:
      std::__throw_bad_array_new_length[abi:ue170006]() in json_reader.cpp.o
      std::__1::__throw_length_error[abi:ue170006](char const*) in json_reader.cpp.o
      Json::throwRuntimeError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in json_value.cpp.o
      Json::throwLogicError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in json_value.cpp.o
  ___gxx_personality_v0, referenced from:
      json-src/build/src/lib_json/CMakeFiles/jsoncpp_lib.dir/json_reader.cpp.o
clang-17: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libjsoncpp.1.9.5.dylib] Error 1
make[1]: *** [src/lib_json/CMakeFiles/jsoncpp_lib.dir/all] Error 2
make: *** [all] Error 2
BillyDonahue commented 7 months ago

This looks very much like a linker not finding your standard library. I'm not really sure what linker command lines were being attempted here and what our expectation should be.

TheCompez commented 7 months ago

It can be solved by defining the following values manually. Isn't it better to apply these in CMakeList.txt settings?

https://github.com/KambizAsadzadeh/jsoncpp/commit/90b48dc3619436722b1760fbf62ef130e3b3b67e

BillyDonahue commented 7 months ago

oh wow. Well you are now having the compiler dictate the choice of standard library. This isn't always the right choice. Many people use gcc's libstdc++ with clang instead of libc++, for example. I am not that familiar with CMake. We are using a different system called Meson.

I'm not sure why this problem starts when c++23 is selected.

BillyDonahue commented 7 months ago

It looks like the platform definition needs to define this, and it shouldn't be done inside individual projects like jsconcpp?

https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_STANDARD_LIBRARIES.html

TheCompez commented 7 months ago

It looks like the platform definition needs to define this, and it shouldn't be done inside individual projects like jsconcpp?

https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_STANDARD_LIBRARIES.html

I Agree with you Billy!, yes it's better to set it as the target platform and not in the target library. Because we may have many sub-libraries that all need these changes.

I solved this problem in my own library that it has some dependency for jsoncpp and it doesn't seem to be a problem now.

CMAKE_CXX_STANDARD_LIBRARIES

Seems the new compilers doesn't recognize it automatically for CXX23 at the moment, but overall the problem is solved.

Thank you!

BillyDonahue commented 7 months ago

ok cool