windows下:
std::string CreateGuid()
{
char buffer[GUID_LEN] = { 0 };
GUID guid;
if (CoCreateGuid(&guid))
{
fprintf(stderr, "create guid error\n");
return "";
}
_snprintf(buffer, sizeof(buffer),"%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X",
guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1], guid.Data4[2],
guid.Data4[3], guid.Data4[4], guid.Data4[5],
guid.Data4[6], guid.Data4[7]);
printf("guid: %s\n", buffer);
return std::string(buffer);
}
linux下(没有验证过):
std::string CreateGuid()
{
uuid_t uu;
char str[36];
uuid_generate( uu );
uuid_unparse(uu, str);
return std::string(str);
}
注意:
windows下需要引用 ole32.lib
在linux下编译时需要链接uuid库(-luuid)