You are not logged in.
Hi all,
I'm struggling a bit with the C++ ABI change, as it looks like I can no longer compile the Promoe client for XMMS2.
I have compiled xmms2-git from AUR, which seems to work fine. But when I try to compile promoe-git, I get undefined linker errors related to strings in the cxx11 namespace, within some of the Boost functions.
Neither of these programs use C++11 so I'm not really sure what to do. I've tried compiling them with -D_GLIBCXX_USE_CXX11_ABI=0 which removes the cxx11 namespace from the error messages, but they still happen and at the same places.
Is anyone else able to compile these two programs?
Offline
I don't know anything about these applications, but I can tell you what the error (invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’) means:
- It is no linker error and not related to the ABI change of the C++ standard library.
- ‘boost::STATIC_ASSERTION_FAILURE<false>’ is declared but not defined. However, the definition is required.
- There is probably a boost #include missing.
Last edited by The Infinity (2015-12-27 23:54:32)
Offline
Actually this is not what the error means in this case. boost::STATIC_ASSERTION_FAILURE must always be undefined - this is how static assertions cause compilation to fail - if you were to define this, all your error checking will be ignored. But if you look to see *why* there is a compile-time (static) assertion failure, it looks like Boost is complaining that there is no template specialisation for boost::variant with an std::cxx11::basic_string parameter, perhaps because it is std::basic_string instead?
Isn't it a bit suspicious that the failure should be because it can't find an std::cxx11::basic_string specialisation, which is one of the new types introduced by the new ABI?
Offline