gcc 5 C++ string issue
Petr Machata
pmachata at redhat.com
Wed Feb 25 16:04:43 UTC 2015
Orion Poplawski <orion at cora.nwra.com> writes:
> On 02/24/2015 05:22 PM, Kevin Kofler wrote:
>> Orion Poplawski wrote:
>>> Getting:
>>>
>>> /builddir/build/BUILD/mrpt-1.0.2/libs/base/include/mrpt/utils/mrpt_macros.h:296:150:
>>> error: no match for 'operator<<' (operand types are
>>> 'std::basic_ostream<char>' and 'std::ostringstream {aka
>>> std::__cxx11::basic_ostringstream<char>}')
>>> #define ASSERT_NOT_EQUAL_( __A, __B) { if (__A==__B) {
>>> #std::ostringstream
>>> s;s<<"ASSERT_NOT_EQUAL_("<<#__A<<","<<#__B<<") failed with\n"<<#__A<<"="
>>> <<__A <<"\n"<<#__B<<"="<<__B; THROW_EXCEPTION(s.str()) } }
>>>
>>>
>>> Any idea what wrong here?
The following patch fixes the compilation issue:
diff -up mrpt-1.0.2/libs/hwdrivers/src/CImpinjRFID.cpp\~ mrpt-1.0.2/libs/hwdrivers/src/CImpinjRFID.cpp
--- mrpt-1.0.2/libs/hwdrivers/src/CImpinjRFID.cpp~ 2013-01-05 00:23:15.000000000 +0100
+++ mrpt-1.0.2/libs/hwdrivers/src/CImpinjRFID.cpp 2015-02-25 16:55:48.628178380 +0100
@@ -97,7 +97,7 @@ void CImpinjRFID::startDriver()
const int ret = ::system(cmdline.str().c_str());
if (0!=ret)
- std::cerr << "[CImpinjRFID::startDriver] Error ("<< ret << ") invoking command:\n" << cmdline << std::endl;
+ std::cerr << "[CImpinjRFID::startDriver] Error ("<< ret << ") invoking command:\n" << cmdline.str() << std::endl;
system::exitThread(); // JL->Emil: Really needed? If not, just remove...
}
I don't know why this stopped working, but it never did the intended
thing as written anyway.
With this out of the way, I'm getting a bunch of the following:
../../lib/libmrpt-maps.so.1.0.2: undefined reference to `pcl::PCDWriter::setLockingPermissions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::interprocess::file_lock&)'
So pcl should be rebuilt for new ABI it seems.
Thanks,
Petr
More information about the devel
mailing list