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 也给了你其他例子