Perl — ошибка Win32::OLE::const

Я пытаюсь использовать WinSCP для SFTP со скриптом Perl. Я в основном использую код с сайта WinSCP дословно. Но я получаю следующую ошибку:

Win32::OLE::CONST->Load: Нет или неверное имя библиотеки типов в строке 12 test.pl. Win32::OLE(0.1712): GetOleTypeLibObject() Не объект Win32::OLE::TypeLib в C:/Perl /lib/Win32/OLE/Const.pm строка 49.

Кто-нибудь знает, что может быть причиной этого?

Мой код:

use Win32::OLE;
use Win32::OLE::Const;
use Win32::OLE::Variant;
 
Win32::OLE->Initialize(Win32::OLE::COINIT_OLEINITIALIZE);
my $session = Win32::OLE->new('WinSCP.Session');
 
my $consts = Win32::OLE::Const->Load($session);
 
my $sessionOptions = Win32::OLE->new('WinSCP.SessionOptions');

person Cory Kleiser    schedule 23.04.2018    source источник
comment
Почему вы используете WinSCP вместо модулей Perl SFTP, таких как Net::SFTP::Foreign   -  person Andrey    schedule 23.04.2018
comment
Я чувствую, что это должен быть комментарий. Но короткий ответ: я экспериментирую с несколькими технологиями, включая Net::SFTP::Foreign.   -  person Cory Kleiser    schedule 23.04.2018


Ответы (1)


Убедитесь, что у вас есть зарегистрированная сборка WinSCP .NET для COM:

%WINDIR%\Microsoft.NET\Framework\<version>\RegAsm.exe WinSCPnet.dll /codebase /tlb
person Martin Prikryl    schedule 23.04.2018
comment
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. – Из обзора - person Shikkediel; 23.04.2018
comment
@Shikkediel Несмотря на то, что я несколько ожидал, что меня обвинят в публикации вопроса только по ссылке, я искренне верил, что ответ стоит сам по себе. Все, что нужно было знать OP, это то, что сборка должна быть зарегистрирована для COM. Как зарегистрировать сборку для COM, довольно общеизвестно. И даже если OP не знаком с этим, его легко найти в Google. Во всяком случае, я добавил пример в свой ответ. - person Martin Prikryl; 24.04.2018
comment
Спасибо за ваш ответ. Это легко решило мою проблему. :) - person Cory Kleiser; 24.04.2018