0

尝试运行使用 GTK+ 构建的程序(例如 GIMP 或 gnuplot,或者您正在使用 GTK+ 构建的应用程序)时,会出现以下错误:

错误信息

(文字内容为:“过程入口点 libintl_setlocale 无法位于动态链接库 intl.dll 中”)

错误并不总是“libintl_setlocale”,它取决于您的应用程序实际尝试调用的过程。

4

1 回答 1

1

问题可能intl.dll是正在使用的库版本与应用程序所需的版本不同。使用 GTK+ 构建的应用程序通常会附带此库的副本,并且该副本应该可以工作,但这并不意味着它是 Windows 将加载的那个。

如果应用程序确实带有库的副本,它很可能被放置在应用程序bin目录中(例如,在 GIMP v2.0 中,它位于{GIMP_DIR}/32/bin/intl.dll)。因此,要让应用程序运行,您应该确保这是您的操作系统为应用程序加载的库。

有多种方法可以做到这一点:

  1. 最简单的方法是将库的副本直接放在与应用程序的可执行文件相同的目录中。Windows 总是首先在与可执行文件[ref]相同的目录中查找 DLL 。这样做的好处是它不应该影响可能依赖于不同版本库的任何其他应用程序。

  2. 或者,您可以尝试追踪错误加载的库版本。例如,使用Dependency Walker检查应用程序并找出正在为init.dll. 找到文件后,您需要找出某种方法来确保加载所需的副本而不是这个副本。例如,将所需的副本放置在库搜索路径上更高的位置,如下所述。这可能需要用所需的文件替换不需要的文件:非常多地替换 DLL,因为它可能会破坏使用它的其他应用程序。一般来说,广泛使用的 DLL 保持向后兼容性,因此当您收到此错误时,可能意味着找到的库副本是旧版本,而所需的副本是仍然可以工作的新版本。但是,这远非保证,因此请始终保留 DLL 的备份副本,而不是覆盖它。

于 2013-10-05T02:13:15.233 回答