Delphi FireDac跨设备运行报错:[Phys][MySQL]-314无法加载MySQL驱动库
解决[Phys][MySQL]-314:libmysql.dll存在但无法加载的问题
以下是几种常见的排查方向:
- 架构不匹配:检查程序编译架构(x86/x64)和
libmysql.dll的位数是否一致。比如开发机是64位系统、编译了x64程序,但复制到32位系统时用了64位dll,或者反过来,都会导致加载失败。可以用Dependency Walker这类工具查看dll的架构信息。 - 依赖库缺失:
libmysql.dll依赖对应版本的Visual C++运行时库(VCRuntime),目标机可能未安装匹配的运行库包。比如你用VS2022编译的程序,目标机需要安装VS2022版的VC Redist。也可以把对应的运行库文件(如msvcp140.dll、vcruntime140.dll)和程序一起打包分发。 - 版本不兼容:确认复制的
libmysql.dll和开发机上使用的版本完全一致,包括MySQL主版本(如5.7/8.0)和小版本号。程序编译时链接的libmysql.lib与运行时的libmysql.dll版本必须匹配,否则会触发加载错误。 - 系统PATH干扰:如果目标机的系统PATH中存在其他版本的
libmysql.dll,程序可能优先加载旧版本引发冲突。可以把程序所在目录移到PATH最前端,或者在程序代码中指定优先加载当前目录的dll。 - 权限与UAC问题:如果程序放在
C:\Program Files这类系统保护目录,普通用户运行时可能因UAC虚拟化,实际读取的是虚拟目录中的文件,导致加载失败。可以将程序移到非系统保护目录(如C:\Users\用户名\AppData\Local),或者右键以管理员身份运行测试。
内容的提问来源于stack exchange,提问作者Born Silly
相关产品推荐
相关产品推荐

