我们目前有大量与 MySQL 8 服务器通信的 Delphi 应用程序,这些应用程序无法在 Windows 11 上运行。它们目前在 Windows 10 上可以正确连接。
应用程序均与可执行文件位于同一文件夹中的
libmysql.dll
以及定义连接的 FDConnectionDefs.ini
一起分发。
据我了解,由于应用程序被编译为32位应用程序,因此需要使用32位MySQL驱动程序,5.7.37版本是最后可用的。当我们尝试运行任何应用程序时,我们会收到错误:
无法加载供应商库 [...libmysql]。找不到指定的模块
并附有提示:
检查 PATH 或 EXE 目录以及 x86 位。
如果我们在 EXE 文件夹中包含
FDDrivers.ini
,我们会得到相同的错误,但路径正确。
如果我们将其文件夹中具有相同 DLL 和 INI 文件的 FDAdministrator 复制到目标计算机,则会出现相同的错误。
编辑 根据建议,我们使用 ProcMon 进行了测试,发现以下内容
应用程序正确查找并加载 EXE 目录中提供的 libmysql.dll 文件
Windows 11 版本在尝试加载
libmysqld.dll
和 libmysql.dll
时失败。这就是导致错误消息的原因。
Windows 10 版本不会尝试加载
libmysqld
事实证明,问题出在我们安装的 Visual Studio Redistributable 版本上。我们安装的最新 x86 redistributatle 不起作用。
但是 2013 版本确实可以工作。我将按照 @re0sless 的建议尝试 2015 版本