【问题标题】:cannot convert from string to Uuid无法从字符串转换为 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" 它需要一个宽字符串。

标签: c++ visual-studio compiler-errors c++14


【解决方案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 修补答案
  • 另一种选择是调用 UuidFromStringA ,避免需要破解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 2021-10-09
  • 2016-12-02
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多