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

Delphi应用在Ubuntu的Wine环境下无法初始化IBX组件

解决Wine下Delphi IBX组件初始化「Invalid code page」崩溃问题
  • 对齐Wine的区域与代码页配置:
    你的Delphi应用依赖的MBCS编码对应特定代码页,比如简体中文对应936(GBK)、繁体中文对应950(Big5)。直接通过注册表强制设置对应区域和代码页关联:

    # 以简体中文为例,按需替换区域和代码页参数
    wine reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Locale" /v Default /t REG_SZ /d "zh-CN" /f
    wine reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Locale" /v Name /t REG_SZ /d "Chinese (Simplified, PRC)" /f
    wine reg add "HKLM\System\CurrentControlSet\Control\Nls\CodePage" /v 936 /t REG_SZ /d "gbk.dll" /f
    

    若应用依赖其他语言编码,比如日文则替换为ja-JP区域和932代码页。

  • 补全Wine的MBCS支持组件:
    多数基础Wine安装包缺少MBCS相关系统库,用winetricks安装专门的mbcs组件:

    winetricks mbcs
    

    同时确保wine-mono和wine-gecko已安装,这两个组件对Delphi应用的运行环境支持至关重要。

  • 调整IBX的编码初始化逻辑:
    若有权限修改应用代码,在IBX组件初始化前手动注册对应代码页:

    // 放在Application.Initialize执行之前
    TMBCSEncoding.RegisterCodePage(936, 'GBK');
    

    也可直接修改IBX组件的Charset属性为目标代码页,避免自动检测编码时出错。

  • 切换Wine版本测试:
    旧版Delphi(如Delphi 2007及更早版本)的IBX组件对新版Wine兼容性一般,建议尝试Wine 6.x或7.x的稳定版,避开最新开发分支版本。

我之前帮同事解决过相同问题,他的Delphi 2007+IBX 7.0应用按上述步骤设置后,在Wine环境下运行正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:32:10