COM : 将 'const GUID*' 转换为 const wchar_t*
COM : convert 'const GUID*' to const wchar_t*
我正在将一些代码从 VS 移植到 mingw C++。我的代码中的语句之一是
CFactoryTemplate g_Templates[1] = {
{&CLSID_SystemClock, CSystemClock::CreateInstance}
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
我在第一个语句中收到以下错误
error: cannot convert 'const GUID* {aka const _GUID*}' to 'const
WCHAR* {aka const wchar_t*}' in initialization
我对此完全不解。我做了一点调查,注意到
CFactoryTemplate 是 combase.h
中的 class 。如果重要的话,我的项目也启用了 UNICODE。关于如何解决此问题的任何建议?
你的代码-你说移植是错误的,你需要给CFactoryTemplate提供不同的参数,编译错误证明了这一点。在这里你会找到一些示例代码来初始化这个 class 的实例数组(你不需要填写所有字段):
// list of class ids and creator functions for class factory
CFactoryTemplate g_Templates[2]=
{ { L"Gargle filter" // CFactoryTemplate.m_name
, &CLSID_Gargle // CFactoryTemplate.m_ClsID
, CGargle::CreateInstance // CFactoryTemplate.m_lpfnNew
, NULL // CFactoryTemplate.m_lpfnInit
, &sudGargle // CFactoryTemplate.m_pAMovieSetup_Filter
}
, { L"Gargle filter property page"
, &CLSID_GargProp
, CGargleProperties::CreateInstance
}
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
来自 https://msdn.microsoft.com/en-us/library/aa451506.aspx
Hans Passant 也给了你其他例子
我正在将一些代码从 VS 移植到 mingw C++。我的代码中的语句之一是
CFactoryTemplate g_Templates[1] = {
{&CLSID_SystemClock, CSystemClock::CreateInstance}
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
我在第一个语句中收到以下错误
error: cannot convert 'const GUID* {aka const _GUID*}' to 'const WCHAR* {aka const wchar_t*}' in initialization
我对此完全不解。我做了一点调查,注意到
CFactoryTemplate 是 combase.h
中的 class 。如果重要的话,我的项目也启用了 UNICODE。关于如何解决此问题的任何建议?
你的代码-你说移植是错误的,你需要给CFactoryTemplate提供不同的参数,编译错误证明了这一点。在这里你会找到一些示例代码来初始化这个 class 的实例数组(你不需要填写所有字段):
// list of class ids and creator functions for class factory
CFactoryTemplate g_Templates[2]=
{ { L"Gargle filter" // CFactoryTemplate.m_name
, &CLSID_Gargle // CFactoryTemplate.m_ClsID
, CGargle::CreateInstance // CFactoryTemplate.m_lpfnNew
, NULL // CFactoryTemplate.m_lpfnInit
, &sudGargle // CFactoryTemplate.m_pAMovieSetup_Filter
}
, { L"Gargle filter property page"
, &CLSID_GargProp
, CGargleProperties::CreateInstance
}
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
来自 https://msdn.microsoft.com/en-us/library/aa451506.aspx
Hans Passant 也给了你其他例子