You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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.dllvcruntime140.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

火山引擎 最新活动