如何解决此错误(将wchar_t转换为BSTR)?

时间:2019-07-05 03:21:47

标签: c++

我是C ++的新手,我正在尝试编译此代码,并收到如下错误, 谁能给我一个解决的指南?非常感谢。 我在Google上搜索了很多,但仍然无法解决

Error   C2664   'HRESULT IRegistrationInfo::put_Author(BSTR)': cannot convert argument 1 from 'const wchar_t [12]' to 'BSTR'    ConsoleApplication7 c:\users\hellojeff\source\repos\consoleapplication7\consoleapplication7\consoleapplication7.cpp 135 1   
Warning C4603   '_WIN32_DCOM': macro is not defined or definition is different after precompiled header use ConsoleApplication7 c:\users\hellojeff\source\repos\consoleapplication7\consoleapplication7\consoleapplication7.cpp 5   1   
Error (active)  E0167   argument of type "const wchar_t *" is incompatible with parameter of type "BSTR"    ConsoleApplication7 C:\Users\HelloJeff\source\repos\ConsoleApplication7\ConsoleApplication7\ConsoleApplication7.cpp 135 28

似乎此行的const wchar_无法转换为'BSTR',

hr = pRegInfo->put_Author(L"Author Name");

完整代码位于https://docs.microsoft.com/en-us/windows/win32/taskschd/logon-trigger-example--c---

1 个答案:

答案 0 :(得分:0)

您可以这样做:

hr = pRegInfo->put_Author(_bstr_t(L"Author Name"));

BSTR是与宽字符串文字不同的字符串。 _bstr_t类是一个包装器,在这种情况下,该包装器从文字中制作出一个临时BSTR以便传递给该函数。

有关更多信息,请参见this article