COM:转换' const GUID *'到const wchar_t *

时间:2015-05-19 17:29:18

标签: c++ visual-studio com mingw

我正在将一些代码从VS移植到mingw C ++。我的代码中的一个陈述是

CFactoryTemplate g_Templates[1] = {
    {&CLSID_SystemClock, CSystemClock::CreateInstance}
};

int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);

我在第一个语句

上收到以下错误
  

错误:无法转换' const GUID * {aka const _GUID *}'到#const;   WCHAR * {aka const wchar_t *}'在初始化

我对此感到十分困惑。我做了一点调查并注意到了 CFactoryTemplate是combase.h中的一个类。如果重要的话,我的项目也启用了UNICODE。有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:4)

你的代码 - 你说你移植是错误的,你需要为CFactoryTemplate提供不同的参数,编译器错误证明了这一点。在这里,您将找到一些示例代码来初始化此类的实例数组(您不需要填充所有字段):

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