我已经编写了一个与Oracle连接的Perl脚本。这个脚本在安装了PERL64的机器上运行得很好。我试图使用ActiveState PerlApp将这个脚本转换为EXE。再一次,在我的机器上工作得很好。一旦可执行文件在不包含Perl的机器上,就缺少了连接到Oracle所需的DLL。
use DBI;
# CONFIG VARIABLES
our $database = "database.app.net";
our $host = "server.app.net";
our $port = "1522";
our $user = "SVC_app";
our $pw = 'Password';
# DATA SOURCE NAME
our $dsn = "dbi:Oracle:$host:$port/$database";
# PERL DBI CONNECT
our $connect = DBI->connect($dsn, $user, $pw);
# PREPARE THE QUERY
our $query = 'SELECT Blah FROM database."table" where "blah" = ?';
our $query_handle = $connect->prepare($query);
# EXECUTE THE QUERY
$query_handle->execute($value);
# BIND TABLE COLUMNS TO VARIABLES
$query_handle->bind_columns(undef, \$return);
# LOOP THROUGH RESULTS
while($query_handle->fetch()) {
#print "$return";
} 我收到的错误是:
无法在/DynaLoader.pm第224行找到模块DBD::load_file:The指定的模块的“auto/DBD/Oracle/Oracle.dll”。
提前感谢
发布于 2016-07-13 07:27:29
有两种情况:
另外,请记住,这个窗口对DLL文件有点挑剔。它可能说Oracle.dll缺失了,但实际上缺少的可能是它的依赖项之一。也许是OCI.dll?如果您有多个具有相同名称的DLL文件,请确保加载了哪个DLL文件,因为它可能不是正确的版本。
如果文件在那里,它们只有一个版本,它们在路径中,它仍然找不到它们,您可以尝试通过在所需的DLL上运行regsvr32命令来手动注册这些文件。
发布于 2016-07-14 16:27:34
您需要在运行EXE的任何计算机上分别安装Oracle客户端。
ActiveState的PDK中的PerlApp不会将Oracle封装到EXE中,因为这样做将违反Oracle的再分发协议。
https://stackoverflow.com/questions/38339035
复制相似问题