boost compile error Mac OS X 10.7.4

13,052

Solution 1

Did you use recursive search path for the headers? If so change it to non-recursive. That might solve the problem.

Solution 2

I had similary problem!I soved the problem that: Xcode->Buid Setting->C++ language Dialect(GNU++11) ->C++Standard Library(libc++(LLVM C++ with C++ 11)

Share:
13,052
Masamichi Ueta
Author by

Masamichi Ueta

Software Engineer

Updated on June 05, 2022

Comments

  • Masamichi Ueta
    Masamichi Ueta almost 2 years

    I want to use boost on my Mac.

    Mac OS X 10.7.4 Xcode 4.5

    I installed boost by homebrew.

    brew install boost
    

    Boost version is 1.49.0. And I set up my Xcode project.

    Add Header search path.

    /usr/local/Cellar/boost/1.49.0/include
    

    Add libraries

    libboost * .dylib
    

    When I compile my project, I have many errors. Clang LLVM 1.0 Error. ( I want to upload an image, but I can't upload becase I don't have more than 10 reputation. )

    use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'?
    use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'?
    too few template arguments for class template '__is_function'
    use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'?
    field has incomplete type 'std::exception_ptr'
    expected ';' at end of declaration list
    no member named 'memcpy' in namespace 'std::__1'; did you mean 'memcpy'?
    no member named 'memcpy' in namespace 'std::__1'; did you mean 'memcpy'?
    expected ';' at end of declaration list
    expected ';' at end of declaration list
    C++ requires a type specifier for all declarations
    'operator==' cannot be the name of a variable or data member
    use of undeclared identifier 'nullptr_t'; did you mean 'nullptr'?
    expected ';' at end of declaration
    expected unqualified-id
    expected ';' at end of declaration list
    unknown type name 'nullptr_t'
    unknown type name 'nullptr_t'
    qualified reference to 'shared_ptr' is a constructor name rather than a type wherever a constructor can be declared
    too many errors emitted, stopping now
    

    I checked this question.

    XCode with boost "Semantic Issue - undeclared identifier va_start"

    But I couldn't find answers. Please let me know if there is a solution.

    The header file using boost is like this.

    GLTexture.hpp

    #pragma once
    
    #ifndef __GL_TEXTURE_HPP__
    #define __GL_TEXTURE_HPP__
    
    // Standard libraries.
    #include <iostream>
    #include <fstream>
    #include <string>
    
    #ifdef _WIN32
    #pragma warning (push)
    #pragma warning (disable:4819)
    #endif
    
    // Smart pointers.
    #include <boost/shared_ptr.hpp>
    #include <boost/scoped_ptr.hpp>
    #include <boost/shared_array.hpp>
    
    // Foreach macros.
    #include <boost/foreach.hpp>
    
    // Regular expression.
    #include <boost/regex.hpp>
    
    // Image I/O.
    #define png_infopp_NULL (png_infopp)NULL
    #define int_p_NULL (int*)NULL
    #include <boost/gil/gil_all.hpp>
    #include <boost/gil/extension/io/jpeg_io.hpp>
    #include <boost/gil/extension/io/png_io.hpp>
    
    // File operations,
    #include <boost/filesystem.hpp>
    
    // Linear algebra,
    #include <boost/numeric/ublas/vector.hpp>
    #include <boost/numeric/ublas/matrix.hpp>
    #include <boost/numeric/ublas/io.hpp>
    
    // String functions.
    #include <boost/algorithm/string.hpp>
    
    // Serialization
    #include <boost/serialization/serialization.hpp>
    #include <boost/serialization/string.hpp>
    #include <boost/serialization/vector.hpp>
    #include <boost/archive/xml_iarchive.hpp>
    #include <boost/archive/xml_oarchive.hpp>
    #include <boost/serialization/version.hpp>
    
    #ifdef _WIN32
    #pragma warning (pop)
    #endif
    
    // OpenGL and OpenGL Utility Toolkit
    #ifdef _WIN32
    
    #include <GL/glew.h>
    #include <GL/GLUT.h>
    
    #elif defined __APPLE__
    
    #include <OpenGL/OpenGL.h>
    #include <GLUT/GLUT.h>
    
    
    #endif
    
    #include "TextureManager.hpp"
    #include <time.h>
    
    class TextureManager;
    
    using namespace std;
    
    
    /// function to convert RGB image to RGBA image.
    /// Filling its alpha channel with 255.
    /// This function is called from boost::gil::copy_and_convert_pixels()
    namespace boost { 
        namespace gil {
            template <> void color_convert<rgb8_pixel_t,rgba8_pixel_t>(const rgb8_pixel_t& src,rgba8_pixel_t& dst);
        }
    }
    
    
    class GLTexture
    {
    public:
    
        //Destructor
        ~GLTexture();
    
        //Return instance of GLTexture
        static boost::shared_ptr<GLTexture> getInstance(const std::string& filename, bool _isVolatile = true);
    
        //Load image file and generate texture
        bool LoadFromFile(boost::shared_ptr<GLTexture> texture);
    
        //Bind texture when the texture exists. If the texture doesn't exist, this method generates a texture.
        static void bindTexture(boost::shared_ptr<GLTexture> texture);
    
        //Setter of texFileName
        void setTextureFile(const std::string filename);
        //Setter of volatile Flag
        void setIsVolatile(bool _isVolatile);  
    
        //Getter of texture ID
        inline const GLuint& getTextureID(void)const{
            return this->texture;
        };
    
        //Overload of operator to sort list
        friend bool operator <(const boost::shared_ptr<GLTexture>& texture1, const boost::shared_ptr<GLTexture>& texture2);
        friend std::ostream& operator <<(ostream& os, const boost::shared_ptr<GLTexture>& texture);
    
    
    
    
    public:
        GLuint texture;             //texture id
        std::string texFileName;    //image file path
        int width;                  //width of image
        int height;                 //height of image
        clock_t start, end;         //start is the timing of bindTexture, end is the timing of delete, these are used to sort list.
        bool isVolatile;            //the flag whether this texture is volatile or not. true is volatile, and false is not volatile. To keep texture, this is false.
        bool isRead;                //the flag whether this texture already exists in texturelist. true means "exists", false means "not exists".
    
        boost::shared_ptr<boost::gil::rgba8_image_t> pixelData_ptr;                     //smart pointer to contain pixelData
        boost::shared_ptr<boost::gil::rgba8_image_t::const_view_t> viewwithAlpha_ptr;   //smart pointer to contain viewData
    
    
    
    
    private:
        //Forbid copy constructor
        GLTexture();
        GLTexture(const std::string& imageFilePath, bool _isVolatile = false);
        GLTexture(const GLTexture& glTexture);
        GLTexture& operator = (const GLTexture& glTexture);
    
        //load image from SSD
        bool LoadImage(const std::string& filename);
    
    
    
    
    };
    
    #endif
    

    TextureManager.hpp

    #pragma once
    
    #ifndef __TEXTURE_MANAGER_HPP__
    #define __TEXTURE_MANAGER_HPP__
    
    // Standard libraries.
    #include <iostream>
    #include <fstream>
    #include <string>
    
    #ifdef _WIN32
    #pragma warning (push)
    #pragma warning (disable:4819)
    #endif
    
    // Smart pointers.
    #include <boost/shared_ptr.hpp>
    
    #include <boost/shared_array.hpp>
    
    // Foreach macros.
    #include <boost/foreach.hpp>
    
    // Regular expression.
    #include <boost/regex.hpp>
    
    // Image I/O.
    #define png_infopp_NULL (png_infopp)NULL
    #define int_p_NULL (int*)NULL
    #include <boost/gil/gil_all.hpp>
    #include <boost/gil/extension/io/jpeg_io.hpp>
    #include <boost/gil/extension/io/png_io.hpp>
    
    // File operations,
    #include <boost/filesystem.hpp>
    
    // Linear algebra,
    #include <boost/numeric/ublas/vector.hpp>
    #include <boost/numeric/ublas/matrix.hpp>
    #include <boost/numeric/ublas/io.hpp>
    
    // String functions.
    #include <boost/algorithm/string.hpp>
    
    // Serialization
    #include <boost/serialization/serialization.hpp>
    #include <boost/serialization/string.hpp>
    #include <boost/serialization/vector.hpp>
    #include <boost/archive/xml_iarchive.hpp>
    #include <boost/archive/xml_oarchive.hpp>
    #include <boost/serialization/version.hpp>
    
    #ifdef _WIN32
    #pragma warning (pop)
    #endif
    
    // OpenGL and OpenGL Utility Toolkit
    #ifdef _WIN32
    
    #include <GL/glew.h>
    #include <GL/GLUT.h>
    
    #elif defined __APPLE__
    
    #include <OpenGL/OpenGL.h>
    #include <GLUT/GLUT.h>
    
    
    #endif
    
    #include "GLTexture.hpp"
    
    
    class GLTexture;
    
    class TextureManager
    {
    public:
        TextureManager(void);
        ~TextureManager(void);
    
        //Generate Texture
        static void genTexture(boost::shared_ptr<GLTexture> texture);
    
    
        static void setTexture(const boost::shared_ptr<GLTexture> texture);
    
        static void deleteTexture();
        static bool checkList(const std::string& filename);
    
    
    private:
    
        //Forbid copy constructor
        TextureManager(const TextureManager& texManager);
        TextureManager& operator = (const TextureManager& texManager);  
    
    };
    
    #endif
    
  • Dai
    Dai over 8 years
    I'm having the same problem on Xcode 7.2 but changing the C++ Language settings to match yours (and other combinations too) doesn't stop the errors.
  • Dai
    Dai over 8 years
    @MichaelIV No, sorry. I gave up.