Delphi 10.2 Tokyo+Oracle 11g仅Debug模式报错:无法加载oci.dll(错误126)
原32位Win10下基于Delphi 10.2 Tokyo + Oracle 11g开发的32位应用运行正常,迁移到64位Win10后,应用可正常编译直接运行,但F9调试时抛出
TDBXError/EOleException,提示:Cannot load oci.dll library (error code 126). The oci.dll library may be missing from the system path or you may have an incompatible version of the library installed
核心原因
64位Windows系统中,Delphi 32位调试器的DLL加载路径优先级与直接运行程序不同,导致调试时无法定位到正确的32位oci.dll,或加载了不兼容的版本。
具体解决步骤
安装匹配版本的32位Oracle客户端
必须安装Oracle 11g对应的32位客户端(不能用64位客户端),安装完成后将客户端的bin目录(例如C:\Oracle\11gClient32\bin)添加到系统PATH环境变量最前端,避免被64位系统路径覆盖。配置Delphi调试专属环境变量
- 打开Delphi 10.2,依次点击
Tools > Options > Environment Variables - 在
User overrides区域添加PATH变量,值设置为:[32位Oracle客户端bin目录];%PATH%(例如C:\Oracle\11gClient32\bin;%PATH%) - 保存设置后重启Delphi,确保环境变量生效。
- 打开Delphi 10.2,依次点击
修正DLL放置路径
不要将oci.dll直接放入System32目录(该目录为64位DLL专属),32位DLL应放在SysWOW64目录,但更推荐通过Oracle客户端目录的方式管理,避免版本冲突。检查DLL依赖完整性
用32位版本的Dependency Walker打开你的32位oci.dll,检查是否存在缺失的依赖库(如msvcr100.dll等运行时库),将缺失的库复制到32位Oracle客户端的bin目录下。调整Delphi调试器兼容性
右键Delphi 10.2快捷方式,选择Properties:- 在
Compatibility标签下勾选Run this program in compatibility mode for,选择Windows 7 - 勾选
Run as administrator,避免权限问题导致DLL读取失败
- 在
验证项目调试设置
打开项目选项:Project > Options > Debugger > OS Platforms > Windows 32-bit
确认Debugger path包含32位Oracle客户端的bin目录,或勾选Use system PATH并确保系统PATH已正确配置。
内容的提问来源于stack exchange,提问作者Anderson

