无法从字符串转换为 Uuid

Posted

技术标签:

【中文标题】无法从字符串转换为 Uuid【英文标题】:cannot convert from string to Uuid 【发布时间】:2019-01-01 13:32:57 【问题描述】:

我正在尝试在 Visual Studio 2017 C++ 控制台应用程序中编译以下 C++ 代码。

GUID patchId;
auto resa = UuidFromString("905EAA46-C9E3-4B5C-8133-0000165A4DDD", &patchId);

它给了我以下编译错误。

错误 C2664 'RPC_STATUS UuidFromStringW(RPC_WSTR,UUID *)': 无法将参数 1 从 'const char [37]' 转换为 'RPC_WSTR'

我该如何解决这个错误?

【问题讨论】:

修复:L"905EAA46-C9E3-4B5C-8133-0000165A4DDD" 它需要一个宽字符串。 【参考方案1】:

系统平台标头中似乎存在错误。如果您将wchar_t 定义为与unsigned short 不同的类型(您应该这样做),则https://social.msdn.microsoft.com/Forums/vstudio/en-US/d1b4550a-407b-4c09-8560-0ab9ef6ff754/error-while-compiling-c2664?forum=vclanguage 开始; RPC_WSTRunsigned short* 应该是 wchar_t*

这样做:

UuidFromStringW((RPC_WSTR)L"905EAA46-C9E3-4B5C-8133-0000165A4DDD", &patchId);

就是这么可怕。

【讨论】:

我都试过了,但仍然得到同样的错误。编译器也有以下文本。 "指向的类型不相关;转换需要 reinterpret_cast、C 样式转换或函数样式转换" @BKS 啊哈,social.msdn.microsoft.com/Forums/vstudio/en-US/… @BKS 修补答案 另一种选择是调用 UuidFromStringA ,避免需要破解

以上是关于无法从字符串转换为 Uuid的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CBUUID 转换为字符串

Django:在 Django 模板引擎中将 uuid 值转换为字符串

将 UUID 32 个字符的十六进制字符串转换为“YouTube 风格”的短 id 并返回

覆盖标准 ID 标量

Unity 无法从“字符串”转换为“整数”

python:如何将有效的 uuid 从 String 转换为 UUID?