netease-im / NIM_Duilib_Framework

网易云信Windows应用开发框架。
MIT License
2.09k stars 834 forks source link

在新装的xp系统上, 程序报错,无法定位613于动态链接库gdiplus.dll上 #404

Closed Reg1350 closed 2 years ago

Reg1350 commented 2 years ago

问题现象

U)9KAFF7%G(98}B8{6@~_4E

预期结果

重现步骤

nmgwddj commented 2 years ago
Reg1350 commented 2 years ago

编译工具链是使用v141_xp xp系统不确定是不是还需要打补丁,只是虚拟机用来测试的 我询问其他人,得知这个报错有可能是使用了xp不支持的函数(gdipus) duilib/Render/Render.cpp 这个类是什么作用? 注释掉void RenderContext_GdiPlus::DrawBoxShadow(const UiRect& rc, const CSize& roundSize, const CPoint& cpOffset, int nBlurRadius, int nBlurSize, int nSpreadSize, DWORD dwColor, bool bExclude) 该函数的内容后,程序在xp上能正常使用

nmgwddj commented 2 years ago

请确认下您那边 XP Service Pack 版本是 2 还是 3? GDIPlus 是 GDI 渲染引擎的加强版,原版 XP SP3 有这些功能但可能不完善,所以可能需要安装完整 SP 和 hotfix 补丁包才可以。

Reg1350 commented 2 years ago

1649413947(1)

nmgwddj commented 2 years ago

1649413947(1)

这块代码是后面开发者贡献的,没有考虑对 XP 的兼容,Gdiplus::BlurParams 要工作在 Windows Vista 以上才可以。

可以加宏判断如果大于 XP 系统再启用此函数 (WINVER >= 0x0600)

Reg1350 commented 2 years ago

测试OK了。感谢了