2012-10-02 12 views
9

Ich möchte Boost auf meinem Mac verwenden.Boost Kompilierfehler Mac OS X 10.7.4

Mac OS X 10.7.4 Xcode 4.5

Ich installierte Schub von Homebrew.

brew install boost 

Boost-Version ist 1.49.0. Und ich habe mein Xcode-Projekt eingerichtet.

Header Suchpfad hinzufügen.

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

hinzufügen Bibliotheken

libboost * .dylib 

Wenn ich mein Projekt kompilieren, habe ich viele Fehler. Clang LLVM 1.0 Fehler. (Ich möchte ein Bild hochladen, aber ich kann nicht laden becase ich nicht mehr als 10 Ruf haben.)

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 

ich diese Frage geprüft.

XCode with boost "Semantic Issue - undeclared identifier va_start"

Aber ich konnte nicht Antworten finden. Bitte lassen Sie mich wissen, wenn es eine Lösung gibt.

Die Header-Datei mit Boost ist wie folgt. !

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 
+0

Waren Sie schon in GCC LLVM Compiler von Apple LLVM zu ändern versucht, hinzuzufügen? – Ninten

+0

Können Sie den entsprechenden Code anzeigen, der die Fehler verursacht? –

+0

@Ninten Ich habe versucht, den Compiler zu GCC LLVM zu ändern, aber ich hatte die gleichen Fehler. – micchyboy

Antwort

3

ich Similary Problem hatte ich soved das Problem, dass: Xcode-> Buid Stell-> C++ Sprache Dialect (GNU ++ 11) -> C++ Standardbibliothek (libC++ (LLVM C++ mit C++ 11)

+1

Ich habe das gleiche Problem auf Xcode 7.2, aber die C++ - Spracheinstellungen zu ändern, um Ihre (und andere Kombinationen) auch zu vergleichen, stoppt die Fehler nicht. – Dai

+0

@Dai hast du das gelöst? –

+0

@MichaelIV Nein, tut mir leid. Ich gab auf. – Dai

7

Haben Sie den rekursiven Suchpfad für die Header verwendet? Wenn dies der Fall ist, ändern Sie es in nicht rekursiv. Das könnte das Problem lösen.