2

我刚刚从 Enterprise DB 安装了最新的 Postgres 二进制文件,并尝试安装一些用户语言,但失败并出现以下错误:

postgres=# create language pltcl;
ERROR: could not load library "C:/Software/PostgreSQL/9.2/lib/pltcl.dll": The specified module could not be found.

postgres=# create language plperl;
ERROR: could not load library "C:/Software/PostgreSQL/9.2/lib/plperl.dll": %1 is not a valid Win32 application.

postgres=# select version();
PostgreSQL 9.2.4, compiled by Visual C++ build 1600, 64-bit

我已经验证在上述位置有 dll,所以我想知道 $libdir 是否需要 M$ windows 反斜杠而不是 unix 正斜杠?但我真的不知道。

我将不胜感激有关如何解决的任何想法。我将尝试 32 位安装。谢谢!

谢谢!

4

1 回答 1

4

当它真正意味着“指定的模块或递归地,找不到它需要加载的任何 DLL ”时, Windows 会引发错误“找不到指定的模块

在这种情况下,您可能没有安装合适的 TCL 运行时。检查安装程序文档以查看它需要的 TCL 版本。

%1 不是有效的 Win32 应用程序很可能是因为您有 32 位 PostgreSQL 试图加载 64 位 perl DLL,反之亦然。系统环境中首先出现的 PerlPATH需要与 PostgreSQL 具有相同的体系结构,即都是 32 位或都是 64 位。

在这两种情况下,使用http://dependencywalker.com/中的 Dependency Walker ( )检查plperl.dll和文件将是有益的。此工具将帮助您识别任何丢失或不匹配的库。pltcl.dlldepends.exe

于 2013-07-06T00:12:57.297 回答