- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(visual)C++から(active)perlを呼ぶ)
(visual)C++から(active)perlを呼ぶ
このQ&Aのポイント
- Vista sp1 64 bit, visual C++ 2008 express, active perl 5.1を使用しています。しばらくの間active perlを使ってテキスト処理のスクリプトを書き溜めてきました。
- 最近になってC++ を使うようになり、今後はC++中心にプログラミングをしていこうと思っています。ただ、これまで書き溜めたperlスクリプトをどうにかしてC++で再利用できないかと思っています。
- またテキスト処理に関してはC++よりやはりperl が優れていると感じ、C++ のプログラムを主体として必要に応じてその中にperlのスクリプトを組み込みたいと考えています。perlのドキュメントを見る限りではperlembedがこの目的に適しているようでした。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
お示しのURLのサンプル showtime.cをWin32コンソールアプリとしてプロジェクトをVC++で作成します プロジェクト > 設定 > C/C++タブ > プリプロセッサの インクリュードパスにPerlのLib\COREを追加 リンクタブ > インプット 追加のライブラリパスにPerlのLib\COREを追加 ソースの冒頭に #pragma comment(lib, "Perl56.lib") を追加 ... Perl56などは適宜修正してください __imp__PL_op_mutexが未定義になるなら #include <perlapi.h> を追加してみましょう
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
回答No.2
追記 当方の ActivePerl5.6ですと PERL_EXIT_DESTRUCT_ENDが定義されていないようでしたので perl_parse( my_perl, NULL, argc, argv, NULL ); #ifdef PERL_EXIT_DESTRUCT_END PL_exit_flags |= PERL_EXIT_DESTRUCT_END; #endif といった具合にしました
お礼
上記の補足でshowtime.exeが動かないと書きましたが、私の勘違いでした。 ドキュメントにあるように % showtime showtime.pl とすると正しく出力が行われました。 お騒がせしました。
補足
丁寧な解説ありがとうございます。 ですが、visual c++ のバージョンの違いか、設定の仕方に関して私の環境と一致しないようです。 私は visual c++ 2008 express edition (visual studio 2008 version 9.0.30729.1 sp english version )ですが #>プロジェクト > 設定 > C/C++タブ > プリプロセッサの >インクリュードパス #リンクタブ > インプット 追加のライブラリパス という項目はないようです。 その代わり プロジェクト > 設定 > C/C++ > General > Additional include directory プロジェクト > 設定 > linker > General > Additional include directory において lib\CORE を指定しました。 #pragma comment(lib, "Perl56.lib") の部分は lib\CORE をみるとPerl510.lib というファイルがあったので Perl510.lib に変更しました。 Debug > start without debugging を実行するとエラーも出ずにすんなり通りましたが、 肝心の時刻が表示されず、何も表示のないコンソールが表示されるだけでした。 showtime.plをdebugフォルダなどにコピーしたりもしましたが 何も変わらないようです。 変わりにURLの別のサンプル"power"を同様の手順で作成すると、こちらは問題なくコンソールでperlサブルーチンを使った計算結果が表示されました。 ひとまず、c++からperlを呼び出すことがVisual C++からできるようになったようです。 ありがとうございました。 showtimeが表示されない問題はこれから検討してみます。