2009-07-20 20 views
0

Ich versuche, rtmpd mit VS2008 zu kompilieren Ich bekomme diesen Fehler.Fehler beim Kompilieren von rtmpd in VC++

Fehler 63 Fehler C4430: Typspezifizierer fehlt - int wird angenommen. Hinweis: C++ unterstützt nicht default-int \ variant.h 87 lib

Ich bin ein Neuling für VC++, auf der Suche nach Hilfe.

Code ist hier

#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;Iam Fehler in dieser Zeile

 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 */ 

Antwort

1

Der Server konnte in Win32 einige Versionen vor laufen (siehe die Svn-Protokolle), aber ich musste es schneiden, um Platz für Linux UND Win32 zu machen.

Momentan ist der Server auf Win32 nicht kompilierbar. Wie von EFraim vorgeschlagen, sind diese Typen in win32 nicht verfügbar, aber Sie können sie einfach definieren. Wenn Sie in trunk/sources/thelib/platform nachsehen, werden Sie einige Verzeichnisse sehen. (osx, freebsd, usw.). Wählen Sie einen von ihnen und kopieren Sie es als win32. Danach füllen Sie die Lücken mit Code. Auch in platform.h enthalten die notwendigen Header-Dateien (Sie haben Beispiele für osx und freebsd in der gleichen Datei)

Lassen Sie mich wissen, wenn Sie irgendwelche Probleme auftreten.

Tx für Ihr Interesse an meinem Projekt.

Mit freundlichen Grüßen, Andrei

P. S. Ich schlage vor, auch ein Konto auf rtmpd.com zu erstellen und dort auch Fragen zu stellen. Es könnte helfen.

+0

hey, danke für die ausführliche Antwort, nur für Ihr Projekt registriert. Also was schlägst du vor, sollte ich typedefs verwenden, um den Code zu kompilieren. –

1

uint32_t und Freund immer Typen in C99-Standard definiert sind. Sie werden von G ++ unterstützt, nicht aber von MSVC++ (das nicht verpflichtet ist, sie als C++ - Compiler zu unterstützen). Sie können typedef MS-spezifische Typen wie unsigned __int32:

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

, e.t.c.

Verwandte Themen