c++ 更改为“使用多字节字符集”后,无法将const char* 转换为PCWSTR

xienkqul  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(253)

我正在尝试将常量char* 传递给Windows SetThreadDescription()函数。

int pthread_setname_np(HANDLE thread, const char* name) { 
     return SetThreadDescription(thread, name);
}

我得到一个错误
'HRESULT设置线程描述(句柄,PCWSTR)':无法将参数2从“const char *”转换为“PCWSTR”
当然,我偶然发现了this并检查了字符集,它已经被设置为使用多字节字符集。有办法解决这个问题吗?
编辑:添加属性

db2dz4w8

db2dz4w81#

@someprogrammerdude在评论中给出了答案:
SetThreadDescription函数似乎不存在于“ASCII”(非宽字符)版本中。您需要将字符串转换为宽字符串,并在调用中使用转换后的字符串。

wnavrhmk

wnavrhmk2#

SetThreadDescription需要unicode(两个字节)说明。线程名称通常只是常量字符串。如果是这种情况,只需在字符串前面加上“L”。

PWSTR astring = L"a unicode description";
char *astring = "a description";

相关问题