Gdiplus无法运行,报错‘PROPID has not been declared’求助
解决GDI+编译时PROPID未声明的问题
问题根源
PROPID是Windows COM组件相关的类型定义,存在于objbase.h中,你当前的代码未正确引入包含该定义的头文件,同时编译命令的链接参数格式错误,且#pragma comment(lib)在GCC(g++)中不生效。
具体解决步骤
修正头文件引用顺序
在代码中先引入windows.h(它会自动包含objbase.h),再引入GDI+的头文件:#include <windows.h> #include <gdiplus.h> using namespace Gdiplus;无需保留
#pragma comment (lib, "Gdiplus.lib"),因为GCC不支持该指令,链接库需通过编译命令指定。修正编译命令的链接参数
GCC中链接库的格式是-l<库名>(去掉库文件名的lib前缀和.lib后缀),你之前的-libgdiplus是错误写法,正确的编译命令应为:g++ main.cpp window.cpp -o app.exe -lgdiplus -lgdi32 -luser32 -lkernel32各参数作用:
-lgdiplus:链接GDI+库-lgdi32:链接基础GDI库-luser32、-lkernel32:链接Windows用户界面和内核基础库,保障程序正常运行
添加Unicode相关宏定义(可选但推荐)
为确保GDI+在Unicode环境下正常工作,编译时可添加以下宏:g++ main.cpp window.cpp -o app.exe -DUNICODE -D_UNICODE -lgdiplus -lgdi32 -luser32 -lkernel32
按上述步骤修改后,即可解决PROPID未声明的编译错误,成功生成可执行文件。
内容的提问来源于stack exchange,提问作者Drago96
相关产品推荐
相关产品推荐

