You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Intel DPC++2024编译GDI+库报'EmfPlusRecordType'不完整类型错误

解决Intel DPC++ 2024编译GDI+时EmfPlusRecordType不完整类型的错误

问题描述

引入标准GDI+头文件#include <gdiplus.h>后,使用MSVC编译器可正常编译,但切换至Intel DPC++ 2024编译器时,会在gdiplusenums.h头文件中触发编译错误:'EmfPlusRecordType' is an incomplete type,代码本身无逻辑问题,需无需修改标准头文件的解决办法。

解决办法

在包含gdiplus.h之前,显式定义GDIPVER宏指定GDI+版本(建议设为0x0110或更高),强制编译器触发EmfPlusRecordType枚举的完整定义:

#define GDIPVER 0x0110
#include <gdiplus.h>

原理:EmfPlusRecordType枚举仅在GDIPVER >= 0x0101时才会在gdiplusenums.h中完整定义,Intel DPC++默认的宏设置可能未满足该条件,导致枚举类型不完整。显式定义GDIPVER可确保相关条件编译块被正确执行。

完整错误输出

error: 'EmfPlusRecordType' is an incomplete type
  #include <gdiplus.h>
           ^
In file included from test.cpp:1:
In file included from C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\gdiplus.h:26:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\gdiplusenums.h:12345: error: forward declaration of 'enum Gdiplus::EmfPlusRecordType' does not complete the type
    EmfPlusRecordType recordType;
    ^

可复现代码

#include <gdiplus.h>

int main()
{
    Gdiplus::GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, nullptr);
    
    Gdiplus::Bitmap bitmap(100, 100);
    
    Gdiplus::GdiplusShutdown(gdiplusToken);
    return 0;
}

内容的提问来源于stack exchange,提问作者BullyWiiPlaza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:27:24