0

Ruby で使用するための単純な SWIG ラッパー DLL を作成しました。VS2010 IDE を使用してこのプロジェクトを実行しました。手順はリンクhttp://www.swig.org/Doc1.3/Ruby.html#Ruby_nn10に記載されています。

上記の例で示した単純なラッパー DLL です。しかし、Ruby require 'example' で DLL をインポートしようとすると、'segmentation fault' が発生します。

私はこれについていくつかの調査を行いました。VS 2010 nmake を使って動的ライブラリを生成してみました。このための MakeFile は、require 'mkmf' create_makefile('example') を使用して生成されました。

生成された example.so は、Ruby に正常にインポートできました。

VS 2010 IDE と同じコンパイラを使用している nmake を使用して生成された動的ライブラリのサイズにかなりの違いがあることに気付きました。1 つ目は 824KB 近く、2 つ目は 11KB でした。

nmake を使用して生成された dll がラッパー ファイルを含む同じコードで正常に動作しているのに、VS 2010 IDE を使用して生成された dll がクラッシュする理由を誰かが提案できますか?

4

1 に答える 1

0

VC 2010 で生成された dll がクラッシュした理由は、使用された RUBY_LIB が静的 lib であったのに対し、nmake は RUBY_LIB ライブラリの動的バージョンを使用していたためです。

于 2013-09-24T08:00:54.077 に答える