Ошибка компиляции rtmpd в VC ++ - PullRequest
0 голосов
/ 20 июля 2009

Я пытаюсь скомпилировать rtmpd, используя VS2008 Я получаю эту ошибку.

Ошибка 63, ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int \ option.h 87 lib

Я новичок в VC ++, ищу помощь.

код здесь

#ifndef _VARIANT_H
#define _VARIANT_H



#include "utils/core.h"

#ifdef LOG_VARIANT_MEMORY_MANAGEMENT
#define CONSTRUCTOR     FINEST(" +  %d->%d",_constructorCount,_constructorCount+1); _constructorCount++;
#define DESTRUCTOR      FINEST(" -  %d->%d",_constructorCount,_constructorCount-1); _constructorCount--;
#define DYNAMIC_ALLOC   FINEST("(+) %d->%d",_dynamicAllocationCount,_dynamicAllocationCount+1); _dynamicAllocationCount++;
#define DYNAMIC_FREE    FINEST("(-) %d->%d",_dynamicAllocationCount,_dynamicAllocationCount-1); _dynamicAllocationCount--;
#else
#define CONSTRUCTOR
#define DESTRUCTOR
#define DYNAMIC_ALLOC
#define DYNAMIC_FREE
#endif

typedef enum _VariantType {
    V_NULL = VAR_ENUM_VALUE_NULL,
    V_UNDEFINED = VAR_ENUM_VALUE_UNDEFINED,
    V_BOOL = VAR_ENUM_VALUE_BOOL,
    V_INT8 = VAR_ENUM_VALUE_INT8,
    V_INT16 = VAR_ENUM_VALUE_INT16,
    V_INT32 = VAR_ENUM_VALUE_INT32,
    V_INT64 = VAR_ENUM_VALUE_INT64,
    V_UINT8 = VAR_ENUM_VALUE_UINT8,
    V_UINT16 = VAR_ENUM_VALUE_UINT16,
    V_UINT32 = VAR_ENUM_VALUE_UINT32,
    V_UINT64 = VAR_ENUM_VALUE_UINT64,
    V_DOUBLE = VAR_ENUM_VALUE_DOUBLE,
    _V_NUMERIC = VAR_ENUM_VALUE_NUMERIC,
    V_TIMESTAMP = VAR_ENUM_VALUE_TIMESTAMP,
    V_DATE = VAR_ENUM_VALUE_DATE,
    V_TIME = VAR_ENUM_VALUE_TIME,
    V_STRING = VAR_ENUM_VALUE_STRING,
    V_NAMED_MAP = VAR_ENUM_VALUE_NAMED_MAP,
    V_MAP = VAR_ENUM_VALUE_MAP
} VariantType;

struct VariantMap;

#define Timestamp struct tm

class Variant {
private:
    VariantType _type;

    union {
        bool b;
        int8_t i8;
        int16_t i16;
        int32_t i32;
        int64_t i64;
        uint8_t ui8;
        uint16_t ui16;

uint32_t ui32; Я получаю Ошибка в этой строке

        uint64_t ui64;
        double d;
        Timestamp *t;
        string *s;
        VariantMap *m;
    } _value;
#ifdef LOG_VARIANT_MEMORY_MANAGEMENT
    static int _constructorCount;
    static int _dynamicAllocationCount;
#endif
public:
    Variant();
    Variant(const Variant &val);

    Variant(const bool &val);
    Variant(const int8_t &val);
    Variant(const int16_t &val);
    Variant(const int32_t &val);
    Variant(const int64_t &val);
    Variant(const uint8_t &val);
    Variant(const uint16_t &val);
    Variant(const uint32_t &val);
    Variant(const uint64_t &val);
    Variant(const double &val);

    Variant(const Timestamp &time);
    Variant(const uint16_t year, const uint8_t month, const uint8_t day);
    Variant(const uint8_t hour, const uint8_t min, const uint8_t sec, const uint16_t m);
    Variant(const uint16_t year, const uint8_t month, const uint8_t day,
            const uint8_t hour, const uint8_t min, const uint8_t sec, const uint16_t m);

    Variant(const char *pValue);
    Variant(const string &value);

    Variant(const string &key, const Variant &value);
    Variant(const string &typeName, const string &key, const Variant &value);

    virtual ~Variant();

    void Reset();
    string ToString(string name = "", uint32_t indent = 0);

    Variant & operator=(const Variant &val);
    Variant & operator=(const bool &val);
    Variant & operator=(const int8_t &val);
    Variant & operator=(const int16_t &val);
    Variant & operator=(const int32_t &val);
    Variant & operator=(const int64_t &val);
    Variant & operator=(const uint8_t &val);
    Variant & operator=(const uint16_t &val);
    Variant & operator=(const uint32_t &val);
    Variant & operator=(const uint64_t &val);
    Variant & operator=(const double &val);

    Variant & operator=(const Timestamp &val);

    Variant & operator=(const char *pVal);
    Variant & operator=(const string &val);

    operator VariantType();
    operator bool();
    operator int8_t();
    operator int16_t();
    operator int32_t();
    operator int64_t();
    operator uint8_t();
    operator uint16_t();
    operator uint32_t();
    operator uint64_t();
    operator double();
    operator Timestamp();
    operator string();

    Variant & operator[](const string &key);
    Variant & operator[](const char *key);
    Variant & operator[](const double &key);
    Variant & operator[](const uint32_t &key);
    Variant & operator[](Variant &key);

    bool operator==(Variant variant);
    bool operator!=(Variant variant);
    bool operator==(VariantType type);
    bool operator!=(VariantType type);

    string GetMapName();
    void SetMapName(string name);
    bool HasKey(const string &key);
    void RemoveKey(const string &key);
    void RemoveAt(const uint32_t index);
    void RemoveAllKeys();
    uint32_t MapSize();
    void PushToArray(Variant value);

    map<string, Variant>::iterator begin();
    map<string, Variant>::iterator end();

    bool IsTimestamp();
    bool IsNumeric();
    bool IsArray();
    void IsArray(bool isArray);
    bool ConvertToTimestamp();

    static bool Deserialize(string &data, Variant &variant);
    string Serialize();
};


#endif  /* _VARIANT_H */

Ответы [ 2 ]

1 голос
/ 20 июля 2009

Сервер был в состоянии работать в win32 несколько версий назад (см. Журналы svn), но мне пришлось сократить его, чтобы освободить место для linux и win32.

В данный момент сервер не компилируется на win32. Как предложил EFraim, эти типы недоступны в win32, но вы можете легко их определить. Более того, если вы посмотрите в trunk / sources / thelib / platform, вы увидите несколько каталогов. (osx, freebsd и т. д.). Выберите один из них и скопируйте его как win32. После этого начните заполнять пробелы с кодом. Также в platform.h включите необходимые заголовочные файлы (у вас есть примеры для osx и freebsd в одном файле)

Дайте мне знать, если у вас возникнут какие-либо проблемы.

Tx за интерес к моему проекту.

С наилучшими пожеланиями, Андрей

P.S. Я предлагаю также создать учетную запись на rtmpd.com и публиковать там любые вопросы. Это может помочь.

1 голос
/ 20 июля 2009

uint32_t и friend - это типы, определенные в стандарте C99. Они поддерживаются G ++, но не MSVC ++ (который не обязан поддерживать их как компилятор C ++). Вы можете вводить определенные для MS типы, такие как unsigned __int32:

typedef unsigned __int32 uint32_t; typedef __int32 int32_t; typedef unsigned __int8 uint8_t;

, т. Е.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...