首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VC++中编译rtmpd时出错

在VC++中编译rtmpd时出错
EN

Stack Overflow用户
提问于 2009-07-20 12:11:25
回答 2查看 1.1K关注 0票数 0

我试图使用VS2008编译rtmpd,得到了这个错误。

错误63错误C4430:缺少类型说明符- int假设。注意: C++不支持默认-int \variant.h 87 lib

我是VC++的新手,正在寻求帮助。

密码在这里

代码语言:javascript
复制
#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在这一行中出现错误

代码语言:javascript
复制
        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 */
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-20 17:28:56

服务器在几个版本之前能够在win32中运行(请参阅svn日志),但我不得不削减它,以便为linux和win32腾出空间。

现在,服务器不能在win32上编译。正如EFraim所建议的那样,这些类型在win32上是不可用的,但是您可以很容易地定义它们。此外,如果您查看主干/源代码/thelib/platform,您将看到一些目录。(osx、freebsd等)选择其中一个并将其复制为win32。在此之后,开始用代码填充空白。在platform.h中还包括必要的头文件(在同一个文件中有osx和freebsd的示例)

如果你遇到任何问题,请告诉我。

因为你对我的项目感兴趣。

向你问好,安德烈

我建议也在rtmpd.com上建立一个账户,并在那里发布任何问题。也许能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2009-07-20 12:24:49

uint32_t和friend是在C99标准中定义的类型。它们由G++支持,但不支持MSVC++ (MSVC++不必作为C++编译器支持它们)。您可以选择类型特定于MS的类型,如无符号的__int32:

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

,Et.c.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1153201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档