首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++中生成独立于平台的GUID?

在C++中生成独立于平台的GUID?
EN

Stack Overflow用户
提问于 2009-02-12 21:17:47
回答 6查看 65.2K关注 0票数 59

在C++中以编程方式生成GUID或UUID而不依赖于特定于平台的工具的最佳方式是什么?我正在尝试为模拟中的对象制作唯一的标识符,但不能依赖微软的实现,因为该项目是跨平台的。

备注:

  • 由于这是一个模拟器,我并不真的需要加密随机性。
  • 如果这是一个32位的数字就最好了。
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-02-12 21:26:17

如果你有能力使用Boost,那么有一个UUID库可以做到这一点。它的使用非常简单--查看文档和this answer

票数 48
EN

Stack Overflow用户

发布于 2009-10-27 01:56:56

在linux上: man uuid

on win:查看msdn中的UUID结构和UuidCreate函数

编辑函数将如下所示

代码语言:javascript
复制
extern "C"
{
#ifdef WIN32
#include <Rpc.h>
#else
#include <uuid/uuid.h>
#endif
}

std::string newUUID()
{
#ifdef WIN32
    UUID uuid;
    UuidCreate ( &uuid );

    unsigned char * str;
    UuidToStringA ( &uuid, &str );

    std::string s( ( char* ) str );

    RpcStringFreeA ( &str );
#else
    uuid_t uuid;
    uuid_generate_random ( uuid );
    char s[37];
    uuid_unparse ( uuid, s );
#endif
    return s;
}
票数 43
EN

Stack Overflow用户

发布于 2014-06-01 09:04:27

如果您不能使用Boost,那么我实现了一个非常小的库,它只是作为每个操作系统的本机guid实现的包装器。它应该可以在Windows (使用CoCreateGuid)、Linux (使用libuuid)、MacOS (使用CFUUID)、iOS (也使用CFUUID)和Android (使用java.util.UUID的JNI调用)上工作。guid生成函数在每个系统上都有不同的实现,但有一个用于比较、字符串注册和解析的通用实现。

它是麻省理工学院许可的,可以在GitHub上找到:

https://github.com/graeme-hill/crossguid

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

https://stackoverflow.com/questions/543306

复制
相关文章

相似问题

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