libmysql.dll加载失败:同配置新机器无法运行Delphi MySQL客户端
排查思路
针对你遇到的32位Delphi+Zeos应用在新Win10 64位客户端无法加载32位libmysql.dll的问题,按以下步骤排查:
- 检查VC++运行库依赖:MySQL 8.x的32位
libmysql.dll依赖32位的VC++ Redistributable(通常是2019或更高版本)。新机器可能只安装了64位运行库,需手动安装对应版本的32位VC++运行包后重试。 - 验证
libmysql.dll的完整性与版本匹配:- 对比正常客户端与新机器上
libmysql.dll的SHA256哈希值(用命令certutil -hashfile "C:\路径\libmysql.dll" SHA256),确认dll未损坏。 - 确认dll版本与MySQL服务器(8.0.27)、Zeos组件版本兼容,避免版本不匹配导致加载失败。
- 对比正常客户端与新机器上
- 排查权限与路径问题:
- 将程序从网络共享复制到本地磁盘(如
C:\temp)运行,排除网络共享的权限限制(比如读取执行权限不足)。 - 检查新机器的UAC设置,尝试右键以管理员身份运行程序,验证是否因权限不足导致dll加载失败。
- 将程序从网络共享复制到本地磁盘(如
- 确认编译与Zeos配置正确性:
- 核对Delphi编译目标:确保项目的目标平台为Win32(
Project -> Options -> Building -> Target Platforms),没有误设为Win64。 - 在程序启动时添加调试代码输出
zConnection1.LibraryLocation的实际值(如ShowMessage(zConnection1.LibraryLocation)),确认路径指向的是存在libmysql.dll的正确目录,尤其是网络共享路径是否解析正常。 - 检查
zConnection1.Protocol设置是否为mysql-8.0,与MySQL服务器版本匹配。
- 核对Delphi编译目标:确保项目的目标平台为Win32(
- 追踪DLL加载过程:使用Process Monitor工具,监控程序加载dll的行为,查看是否存在加载错误(如尝试加载错误路径的dll、依赖项缺失),定位具体失败原因。
- 排查安全软件拦截:临时关闭新机器上的Windows Defender或第三方杀毒软件,测试是否因安全软件拦截了
libmysql.dll的加载,若正常则将dll添加至信任列表。 - 确认Zeos组件版本一致性:确保新机器运行的程序与正常客户端使用的Zeos组件版本完全一致,避免因组件版本差异导致的兼容性问题。
内容的提问来源于stack exchange,提问作者svtdoug
相关产品推荐
相关产品推荐

