簡體   English   中英

提升編譯錯誤Mac OS X 10.7.4

[英]boost compile error Mac OS X 10.7.4

我想在我的Mac上使用boost。

Mac OS X 10.7.4 Xcode 4.5

我通過自制軟件安裝了boost。

brew install boost

Boost版本是1.49.0。 我設置了我的Xcode項目。

添加標題搜索路徑。

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

添加庫

libboost * .dylib

當我編譯我的項目時,我有很多錯誤。 Clang LLVM 1.0錯誤。 (我想上傳圖片,但我無法上傳,因為我沒有超過10個聲譽。)

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

我查了這個問題。

XCode with boost“Semantic Issue - undeclared identifier va_start”

但我找不到答案。 如果有解決方案,請告訴我。

使用boost的頭文件是這樣的。

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

你是否使用遞歸搜索路徑的標題? 如果是這樣,將其更改為非遞歸。 這可能會解決問題。

我有類似的問題!我解決了以下問題:Xcode-> Buid設置 - > C ++語言方言(GNU ++ 11) - > C ++標准庫(libc ++(LLVM C ++ with C ++ 11)

我需要補充一下

#include <cstring>

http://en.cppreference.com/w/cpp/string/byte/memcpy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM