有一个函数使用
将值复制到注册表RegSetValueEx(hKey, theName, 0, REG_DWORD, (unsigned char *)&value, sizeof(value));
调用者传递的 theName
是char *
我收到编译错误:
类型
不兼容char *
的参数与LPCWSTR
为什么会出现此错误?
我复制了一些使用它的代码(我知道它成功构建)并自己构建它。
功能是否已更改或我的项目设置是否搞砸了?我不知道代码的VS版本是哪个版本。
答案 0 :(得分:4)
这是因为Windows在过去18年中一直是Unicode操作系统。它的默认字符串类型是utf-16编码,代码中为wchar_t *。或者std :: wstring。或LPCWSTR,Windows标头中使用的typedef。注意'w'的流行,这意味着宽。
它仍然支持char *字符串,你必须使用RegSetValueExA()。请注意添加的“A”。它也是一个项目设置,使您的程序使用旧的多字节API。项目+属性,常规,字符集。当你这样做时,不要向其他50亿客户进行营销。