[vtk-developers] Building VTK against llvm's libc++

Sean McBride sean at rogue-research.com
Tue Feb 26 11:11:06 EST 2013


On Mon, 25 Feb 2013 15:46:55 -0500, Kyle Lutz said:

>That's because there is no such function with the signature:
>
>operator<<(ostream&, ostream&)
>
>In fact, I'm not even sure what such a function would do. Commenting
>out that line in vtkOStreamWrapper.h/cxx fixes the error.

Removing that line and rebuilding with libstdc++ does indeed work, but with libc++ I get a perhaps-related error:

VTK/Rendering/Core/vtkGenericVertexAttributeMapping.cxx:89:7: error: invalid operands to binary expression ('vtkOStreamWrapper' and 'std::ostringstream'
      (aka 'basic_ostringstream<char>'))
      << attributeName);
      ^  ~~~~~~~~~~~~~
VTK/Common/Core/vtkSetGet.h:477:35: note: expanded from macro 'vtkWarningMacro'
   vtkWarningWithObjectMacro(this,x)
                                  ^
VTK/Common/Core/vtkSetGet.h:525:22: note: expanded from macro 'vtkWarningWithObjectMacro'
            << "): " x << "\n\n";                               \
                     ^

From this code:

void vtkGenericVertexAttributeMapping::AddMapping(
  int unit, const char* arrayName, int fieldAssociation,
  int component)
{
  vtksys_ios::ostringstream attributeName;
  attributeName << unit;

  if (this->RemoveMapping(attributeName.str().c_str()))
    {
    vtkWarningMacro("Replacing existing mapping for attribute "
      << attributeName.str().c_str());
    }
...

Changing "attributeName" to "attributeName.str().c_str()" fixes it.  Is that an appropriate change?

Thanks,

-- 
____________________________________________________________
Sean McBride, B. Eng                 sean at rogue-research.com
Rogue Research                        www.rogue-research.com 
Mac Software Developer              Montréal, Québec, Canada





More information about the vtk-developers mailing list