关于C ++:错误C2664:无法将’IDWriteFactory2 **’转换为’IUnknown **’

error C2664: cannot convert 'IDWriteFactory2 **' to 'IUnknown **'

以下mwe基本上是从此示例中提取的。 完整的示例可以编译并正常工作,但是我的mwe不能与Visual Studio 2013一起编译,我不知道为什么不这样做。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <dwrite_2.h>
#include

using namespace std;


void main()
{
    IDWriteFactory2* m_spdwriteFactory;

    DWriteCreateFactory(
    DWRITE_FACTORY_TYPE_SHARED,
    __uuidof( IDWriteFactory2 ),
    &( m_spdwriteFactory )
    );
}

错误消息显示为:

------ Build started: Project: Test, Configuration: Debug x64 ------

1> Source.cpp

1> Source.cpp(16):错误C2664:'HRESULT DWriteCreateFactory(DWRITE_FACTORY_TYPE,const IID&,IUnknown **)':无法将参数3从'IDWriteFactory2 **'转换为'IUnknown **'

1>指向的类型不相关; 转换需要reinterpret_cast,C样式强制转换或函数样式强制转换

==========构建:0成功,1失败,0最新,跳过0 ==========


您需要将m_spdwriteFactory强制转换为IUnknown **才能修复编译错误。 请参阅此处的示例:http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd368040(v=vs.85).aspx