2011-07-26 8 views
2

私は非常に多くの共有ライブラリで構成されたアプリケーションを持っています。私はいくつかのperl拡張を書いた。また、perlをアプリケーションに埋め込んでいます。PerlをCの質問に埋め込む

私はC++のwithからperlスクリプトを呼び出しています。私のPerl拡張はSVとして命名されている、と言うことができます::ネット::情報とSV ::インターフェイスと私のperlのファイルがこの

use SV::Net::Info; 
use SV::Interface; 
#use IO::Socket; 
... 
... 
... 

のように見ている私は、C++からperlスクリプトを読んで送信することができますよ問題なくC++に出力できます。私はIO自身がCライブラリであるため、これがある

Can't load module IO, dynamic loading not available in this perl. 
(You may need to build a new perl executable which either supports 
dynamic loading or has the IO module statically linked into it.) 

というエラーメッセージが出てい三行目、use IO::Socket;のコメントを外したときに、問題が発生します。私は上記のようにxs-glueを追加しましたhere。追加された接着剤がboot_IOシンボル(IO.soファイルで定義されています)を探しているので、私の問題は解決しませんでした。アプリケーションがIO.soとリンクすることはできません。これは、実行時にperlがdlopenを使用して開くファイルです。 (また、私のアプリケーションはWindows上で動作する必要があり、Windowsは.dllファイルのみで、.libファイルは提供しません)。退出は何ですか?

私は、dlopenを使用して実行時にIO.soから実際のboot_IO関数を実行するwrapper関数boot_IOを作成することを考えています。これは唯一のオプションですか?

+0

http://www.perlmonks.org/?node_id=916694でPerlMonksにクロスポスト – DavidO

+0

* * dlopenのサポートを持っている動的なlibperlにリンクできますか? – hobbs

答えて

1

IO::Socketのライブラリーを静的にリンクする必要があります。.aファイルが作成されていないため、不可能なようです。組み込みのソケット関数を使用するようにコードを変更できますか?

別のオプションは、IO::Socketの純粋なPerl実装を作成することです。

関連する問題