错误 C2664:无法将'IDWriteFactory2 **'转换为'IUnknown **'

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

本文关键字:C2664 转换 IUnknown IDWriteFactory2 错误      更新时间:2023-10-16

下面的mwe基本上是从这个例子中提取的。完整的示例编译并运行良好,但是我的mwe没有使用Visual Studio 2013进行编译,我不明白为什么不这样做。

#include <dwrite_2.h>
#include <atlbase.h>
using namespace std;

void main()
{
    IDWriteFactory2* m_spdwriteFactory;
    DWriteCreateFactory(
    DWRITE_FACTORY_TYPE_SHARED,
    __uuidof( IDWriteFactory2 ),
    &( m_spdwriteFactory )
    );
}

错误消息显示:

------生成已启动:项目:测试,配置:调试x64------

1>来源.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/en-us/library/windows/desktop/dd368040(v=vs.85).aspx