2009-07-20 2 views
0

Iam пытается скомпилировать rtmpd с помощью VS2008 Iam, получая эту ошибку.Ошибка компиляции rtmpd в VC++

Ошибка 63 ошибка C4430: отсутствует спецификатор типа - int. Примечание: C++ не поддерживает default-int \ variant.h 87 lib

Iam новичок в 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 */ 

ответ

1

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

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

Сообщите мне, если у вас возникнут проблемы.

Tx для вашего интереса к моему проекту.

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

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

+0

эй, спасибо за подробный ответ, только что зарегистрированный для вашего проекта. Итак, что вы предлагаете, я должен использовать typedefs для компиляции кода. –

1

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

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

, e.t.c.