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

C++Builder 11.0 64位迁移遗留窗体遇GetDPIForDesigner未解析外部符号错误

解决C++Builder 10.1→11.0 64位迁移中的VCL未解析外部符号错误

针对你遇到的Unresolved external 'Vcl::Controls::TWinControl::GetDPIForDesigner()'这类VCL链接错误,以下是排查和解决的关键步骤:

1. 检查项目VCL库引用配置

  • 打开项目选项(Project > Options),切换到C++ Linker页面,确认Link with dynamic RTL和Link with runtime packages的设置与原10.1项目一致:
    • 若原项目用动态编译,需确保Packages页面已添加vcl.bpl,且64位库路径($(BDSLIB)\win64\release等)未缺失;
    • 若用静态编译,需勾选对应静态VCL库的关联选项,避免链接时找不到符号实现。

2. 重新转换窗体兼容性文件

  • 逐个打开窗体的.dfm文件,确认IDE自动执行版本转换(若提示“Convert form to current version”需确认),转换完成后保存;
  • 删除手动复制的窗体.hpp文件,让IDE重新生成适配11.0版本的头文件,确保TWinControl相关新增方法(如GetDPIForDesigner)的声明正确引入。

3. 确认64位目标平台配置

  • 在项目管理器中添加并设置Windows 64-bit为当前活动平台;
  • 检查Project > Options > Building > C++ Compiler > Target,确保Target architecture为x86_64,Target OS为Windows,避免32/64位配置混淆。

4. 清理缓存后全量构建

  • 执行Project > Clean清除所有中间编译文件(.obj、.tds等);
  • 手动删除项目目录下的Win64、Debug、Release等输出文件夹;
  • 重新打开IDE后执行Project > Build All,避免缓存残留导致的链接异常。

5. 排查自定义代码的VCL引用问题

  • 确保自定义控件或业务代码中已正确包含#include <Vcl.Controls.hpp>,且头文件路径指向11.0的$(BDSINCLUDE)\vcl目录;
  • 检查继承自TWinControl的自定义控件,是否存在错误重写GetDPIForDesigner方法但未实现,或方法签名与VCL库不匹配的情况。

6. 批量同步项目配置

  • 创建项目组并加入全部141个项目;
  • 右键项目组选择Options,统一设置目标平台、链接器选项、包依赖等配置,应用到所有项目,避免逐个配置的遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:43:24