Skip to content

Builds 1 and 2 for 1.9.7 are missing symbols that were included in build 0 on windows #46

Closed

Description

@k-dominik

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

Hello dearest maintainers of the jsoncpp feedstock,

we're depending on jsoncpp in our dpct package via libdpct (feedstock: https://github.com/conda-forge/dpct-meta-feedstock). I noticed that on windows, our package stopped working. I investigated it a bit and it seems to come down to jsoncpp 1.9.7 builds 1 and 2. There seem to be some symbols missing.

Not in 'jsoncpp-1.9.7-h429d478_0', but in 'jsoncpp-1.9.7-h429d478_1':
	public: __cdecl Json::Value::Value(class std::basic_string_view<char, struct std::char_traits<char>>)
	public: class Json::Value __cdecl Json::Value::get(class std::basic_string_view<char, struct std::char_traits<char>>, class Json::Value const &) const
	public: bool __cdecl Json::Value::isMember(class std::basic_string_view<char, struct std::char_traits<char>>) const
	public: bool __cdecl Json::Value::getString(class std::basic_string_view<char, struct std::char_traits<char>> *) const
	public: class Json::Value & __cdecl Json::Value::operator[](class std::basic_string_view<char, struct std::char_traits<char>>)
	public: class Json::Value const & __cdecl Json::Value::operator[](class std::basic_string_view<char, struct std::char_traits<char>>) const
	public: bool __cdecl Json::Value::removeMember(class std::basic_string_view<char, struct std::char_traits<char>>, class Json::Value *)
	public: void __cdecl Json::Value::removeMember(class std::basic_string_view<char, struct std::char_traits<char>>)
Not in 'jsoncpp-1.9.7-h429d478_0', but in 'jsoncpp-1.9.7-h477610d_2':
	public: __cdecl Json::Value::Value(class std::basic_string_view<char, struct std::char_traits<char>>)
	public: class Json::Value __cdecl Json::Value::get(class std::basic_string_view<char, struct std::char_traits<char>>, class Json::Value const &) const
	public: bool __cdecl Json::Value::isMember(class std::basic_string_view<char, struct std::char_traits<char>>) const
	public: bool __cdecl Json::Value::getString(class std::basic_string_view<char, struct std::char_traits<char>> *) const
	public: class Json::Value & __cdecl Json::Value::operator[](class std::basic_string_view<char, struct std::char_traits<char>>)
	public: class Json::Value const & __cdecl Json::Value::operator[](class std::basic_string_view<char, struct std::char_traits<char>>) const
	public: bool __cdecl Json::Value::removeMember(class std::basic_string_view<char, struct std::char_traits<char>>, class Json::Value *)
	public: void __cdecl Json::Value::removeMember(class std::basic_string_view<char, struct std::char_traits<char>>)
Not in 'jsoncpp-1.9.7-h429d478_1', but in 'jsoncpp-1.9.7-h477610d_2':
In 'jsoncpp-1.9.7-h429d478_0' but not in 'jsoncpp-1.9.7-h429d478_1':
	public: class Json::Value & __cdecl Json::Value::operator[](class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &)
	public: bool __cdecl Json::Value::isMember(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &) const
	public: bool __cdecl Json::Value::removeMember(char const *, class Json::Value *)
	public: void __cdecl Json::Value::removeMember(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &)
	public: class Json::Value __cdecl Json::Value::get(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &, class Json::Value const &) const
	public: class Json::Value const & __cdecl Json::Value::operator[](class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &) const
	public: class Json::Value const & __cdecl Json::Value::operator[](char const *) const
	public: class Json::Value & __cdecl Json::Value::operator[](char const *)
	public: class Json::Value __cdecl Json::Value::get(char const *, class Json::Value const &) const
	public: void __cdecl Json::Value::removeMember(char const *)
	public: bool __cdecl Json::Value::removeMember(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &, class Json::Value *)
	public: bool __cdecl Json::Value::isMember(char const *) const

so packages build against _0 will not work with _1, _2. Packages build with one of the latter, will not work with _0...

linux and mac don't seem to be affected by this (although I only did a shallow check of installing our package with specific versions of jsoncpp and trying to import it)

Installed packages

na

Environment info

na

Activity

  1. matthiasdiener commented on Jun 29, 2026

    @matthiasdiener
    Contributor

    Thanks for the report. Probably related to #43. cc @jschueller

  2. added a commit that references this issue on Jun 29, 2026
    551269f
  3. jschueller commented on Jun 29, 2026

    @jschueller
    Contributor
  4. k-dominik commented on Jun 30, 2026

    @k-dominik
    Author

    lovely, thank you @matthiasdiener and @jschueller - also for the super quick fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions