Windows下libmysql.dll正确安装方法及FireDAC加载错误排查
解决Windows下libmysql.dll安装及FireDAC加载错误的方案
我来帮你搞定这个FireDAC加载libmysql.dll的问题,这个错误我之前帮好几个开发者排查过,核心问题大多是位数不匹配或者DLL依赖缺失,咱们一步步来解决:
第一步:先搞懂错误的核心原因
你看到的错误提示:
"[FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysql.dll or libmysqld.dll]. Hint check it is in the PATH or application EXE directories, and has x86 bitness."
重点在最后那句x86 bitness——这说明你的应用是32位(x86)程序,但你放置的libmysql.dll大概率是64位的,或者反过来,位数不匹配是最常见的触发原因。
第二步:获取匹配位数的libmysql.dll
别随便从网上下载DLL,一定要从官方渠道获取对应版本的文件:
- 先确定你的应用位数:右键应用EXE文件→属性→兼容性,查看是否勾选了“以32位模式运行”;如果是用Delphi/C++Builder开发的,看编译时的目标平台是Win32还是Win64。
- 去MySQL官网下载Connector/C(注意不是Connector/ODBC),这是libmysql.dll的官方来源:
- 选择对应Windows版本的ZIP压缩包(不要安装版),根据你的应用位数选32位(x86)或64位(x64)版本。
- 解压后在
lib目录里找到libmysql.dll(优先选Release版本的,Debug版的libmysqld.dll一般用于调试场景)。
第三步:正确放置DLL文件
- 首选位置:直接把匹配好的
libmysql.dll放到应用程序EXE的同目录下,这个是最稳妥的,能避免系统PATH里其他版本DLL的干扰。 - 如果你想放到系统PATH目录:64位系统中,System32是64位DLL目录,SysWOW64是32位DLL目录,别放错位置;不过还是推荐同目录放置,减少冲突风险。
第四步:检查DLL的依赖项(容易忽略的坑)
有时候你放了正确的DLL还是报错,是因为它依赖的VC++运行库缺失了:
- 用Windows自带的
dumpbin工具(需要安装Visual Studio或Windows SDK),打开命令提示符,运行:dumpbin /dependents "C:\你的应用路径\libmysql.dll" - 查看输出里的依赖项,如果有
msvcp140.dll、vcruntime140.dll这类文件缺失,就安装对应位数的VC++ Redistributable(比如MySQL 8.0的Connector/C需要VC++ 2019 Redistributable)。 - 也可以用Dependency Walker工具打开libmysql.dll,直观查看缺失的依赖文件。
第五步:FireDAC的额外配置(针对Delphi/C++Builder开发)
如果你的应用是用FireDAC开发的,还要检查连接配置:
- 打开FDConnection组件的属性,确认
DriverName设置为MySQL。 - 检查
Params里的VendorLib参数,如果手动指定了DLL路径,要改成你放置的正确路径;推荐留空,让FireDAC自动查找同目录下的DLL。 - 确保FireDAC版本和libmysql.dll版本兼容,比如FireDAC 10.4搭配MySQL 8.0的Connector/C稳定性较好。
第六步:测试验证
- 重启应用,最好直接双击EXE运行,避免IDE缓存旧的DLL路径。
- 如果还是报错,打开命令提示符,切换到应用EXE目录,运行
where libmysql.dll,看看系统找到的第一个DLL是不是你放的那个,排查是否有版本冲突。
内容的提问来源于stack exchange,提问作者Rafael Santini




