Perl Language
Компиляция модуля cpan perl sapnwrfc из исходного кода
Поиск…
Вступление
Я хотел бы описать предварительные условия и шаги по созданию модуля sapnwrfc CPAN Perl с средой Strawberry Perl под Windows 7 x64. Он должен работать и для всех последующих версий Windows, таких как 8, 8.1 и 10.
Я использую Strawberry Perl 5.24.1.1 64 бит, но он также должен работать со старыми версиями.
Мне потребовалось несколько часов, чтобы преуспеть с несколькими попытками (32-битная установка 64-разрядной версии Perl, SAP NW RFC SDK, MinGW и компилятор Microsoft C). Поэтому я надеюсь, что некоторые из моих результатов получат пользу.
замечания
Установите текущий пакет с 64-битным пакетом Strawberry Perl с сайта http://strawberryperl.com . В моем случае это было 5.24.1.1.
Загрузите текущую версию пакета SAP NW RFC SDK x64 с https://launchpad.support.sap.com/#/softwarecenter
Вы можете найти его со следующей трассировкой: Пакеты поддержки и патчи => По категориям => Дополнительные компоненты => SAP NW RFC SDK => SAP NW RFC SDK 7.20
В моем случае текущая версия была 7.20 PL42 x64.
Извлеките загруженный файл с помощью sapcar -xvf NWRFC_42-20004568.SAR
Я переименовал папку в C:\nwrfcsdk_x64
Создайте файлы .def и .a для компилятора / компоновщика MinGW со следующими командами в каталоге C: \ nwrfcsdk_x64:
gendef *.dll
dlltool --dllname icuin34.dll --def icuin34.def --output-lib icuin34.a
dlltool --dllname icudt34.dll --def icudt34.def --output-lib icudt34.a
dlltool --dllname icuuc34.dll --def icuuc34.def --output-lib icuuc34.a
dlltool --dllname libsapucum.dll --def libsapucum.def --output-lib libsapucum.a
dlltool --dllname libicudecnumber.dll --def libicudecnumber.def --output-lib libicudecnumber.a
dlltool --dllname sapnwrfc.dll --def sapnwrfc.def --output-lib sapnwrfc.a
В dircectory C: \ nwrfcsdk_x64 \ lib должны существовать следующие файлы:
icudt34.a
icudt34.def
icudt34.dll
icuin34.a
icuin34.def
icuin34.dll
icuuc34.a
icuuc34.def
icuuc34.dll
libicudecnumber.a
libicudecnumber.def
libicudecnumber.dll
libsapucum.a
libsapucum.def
libsapucum.dll
libsapucum.lib
sapdecfICUlib.lib
sapnwrfc.a
sapnwrfc.def
sapnwrfc.dll
sapnwrfc.lib
Запустите командную строку с cmd.exe
и запустите программу cpan
.
Запустите команду get sapnwrfc
чтобы загрузить модуль perl sapnwrfc из CPAN.
Оставьте среду cpan командой exit
. Измените каталог на C:\Strawberry\cpan\build\sapnwrfc-0.37-0
.
Создайте Makefile (ы) с помощью следующей команды. Адаптируйте имена папок в соответствии с настройками.
perl Makefile.PL --source=C:\nwrfcsdk_x64 --addlibs "C:\nwrfcsdk_x64\lib\sapnwrfc.a C:\nwrfcsdk_x64\lib\libsapucum.a"
Запустите команды dmake
и dmake install
для сборки и установки модуля.
Скопируйте файлы из C:\nwrfcsdk_x64\lib
в C:\Strawberry\perl\site\lib\auto\SAPNW\Connection
.
Простой пример для проверки соединения RFC
Простой пример из http://search.cpan.org/dist/sapnwrfc/sapnwrfc-cookbook.pod
use strict;
use warnings;
use utf8;
use sapnwrfc;
SAPNW::Rfc->load_config('sap.yml');
my $conn = SAPNW::Rfc->rfc_connect;
my $rd = $conn->function_lookup("RPY_PROGRAM_READ");
my $rc = $rd->create_function_call;
$rc->PROGRAM_NAME("SAPLGRFC");
eval {
$rc->invoke;
};
if ($@) {
die "RFC Error: $@\n";
}
print "Program name: ".$rc->PROG_INF->{'PROGNAME'}."\n";
my $cnt_lines_with_text = scalar grep(/LGRFCUXX/, map { $_->{LINE} } @{$rc->SOURCE_EXTENDED});
$conn->disconnect;