MFCからPerlスクリプトをコールしてみたくなったので関連記事を探してみました。
上記のサイトを参考に適当なスクリプトを作ってみました。2つの引数を表示するんで"print_arg.pl"という名前をつけましょう。
|pl|
引数を2つ受け取って表示するスクリプト
if (@ARGV != 2) { print "引数の数が一致しません\n"; exit; }
$argv1 = shift @ARGV; $argv2 = shift @ARGV;
printf("引数その1: %s\n", $argv1); printf("引数その2: %s\n", $argv2);
END ||< さて、呼び出し側のC/C++をサンプルを元に作ります。名前は"callperl.c"でええっか。
|cs| / from the Perl distribution /
include <EXTERN.h>
include <perl.h>
pragma comment(lib, "perl58.lib") //!< ★1
/ The Perl interpreter / static PerlInterpreter *my_perl;
void main() { char *perl[] = { "", "C:\print_arg.pl", "そのいち", "そのに" }; my_perl = perl_alloc (); perl_construct (my_perl); perl_parse (my_perl, NULL, 4, perl, (char **)NULL); perl_run (my_perl); perl_destruct (my_perl); //!< ★2 perl_free (my_perl); } ||<
★1・・・おそらく使用しているActive Perlのバージョンが違うので、参考にしたページとはライブラリの名前が違います。"perl56.lib"から"perl58.lib"に変わっています。 ★2・・・ここでブレークしてやれば、print_arg.plがコールされたのが判ると思います。