RegSetValueEx抛出错误char *与LPCWSTR不兼容

时间:2011-05-30 17:46:18

标签: visual-studio-2010 visual-c++

有一个函数使用

将值复制到注册表
RegSetValueEx(hKey, theName, 0, REG_DWORD, (unsigned char *)&value, sizeof(value));
调用者传递的

theNamechar *

我收到编译错误:

  

类型char *的参数与LPCWSTR

不兼容

为什么会出现此错误?

我复制了一些使用它的代码(我知道它成功构建)并自己构建它。

功能是否已更改或我的项目设置是否搞砸了?我不知道代码的VS版本是哪个版本。

1 个答案:

答案 0 :(得分:4)

这是因为Windows在过去18年中一直是Unicode操作系统。它的默认字符串类型是utf-16编码,代码中为wchar_t *。或者std :: wstring。或LPCWSTR,Windows标头中使用的typedef。注意'w'的流行,这意味着宽。

它仍然支持char *字符串,你必须使用RegSetValueExA()。请注意添加的“A”。它也是一个项目设置,使您的程序使用旧的多字节API。项目+属性,常规,字符集。当你这样做时,不要向其他50亿客户进行营销。