Perl Language
ソースコードからPerl cpanモジュールsapnwrfcをコンパイルする
サーチ…
前書き
前提条件と、Windows 7 x64でStrawberry Perl環境でPerl CPANモジュールsapnwrfcを構築する手順を説明します。それは、8、8.1、10のような後のすべてのWindowsバージョンでも機能するはずです。
私はStrawberry Perl 5.24.1.1 64ビットを使用しますが、古いバージョンでも動作するはずです。
いくつかの試み(32対64 Perl、SAP NW RFC SDK、MinGW対Microsoft Cコンパイラのインストール)を成功させるには、時間がかかりました。だから私は私の発見の恩恵を受ける人もいれば幸いです。
備考
http://strawberryperl.comから最新のStrawberry Perl 64ビットパッケージをインストールしてください 。私の場合は5.24.1.1でした。
https://launchpad.support.sap.com/#/softwarecenterから現行バージョンのSAP NW RFC SDK x64ビットをダウンロードしてください。
サポートパッケージとパッチ=>カテゴリ別=>追加コンポーネント=> SAP NW RFC SDK => SAP NW RFC SDK 7.20
私の場合、現在のバージョンは7.20 PL42 x64でした。
ダウンロードしたファイルをsapcar -xvf NWRFC_42-20004568.SAR
抽出しますsapcar -xvf NWRFC_42-20004568.SAR
フォルダの名前をC:\nwrfcsdk_x64
C:\ nwrfcsdk_x64ディレクトリに次のコマンドを使用して、MinGWコンパイラ/リンカ用の.defファイルと.aファイルを作成します。
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
ディレクトリ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
ます。
CPANからPerlモジュールsapnwrfcをダウンロードするには、コマンドget sapnwrfc
を開始します。
exit
コマンドを使用して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;