- 21 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 11:09:06 ]
- Mingw版Ruby 1.9.1-p0 で作った拡張ライブラリが mswin版Ruby 1.9.1で動かせません
原因はMingw版ruby 1.9.1-p0 がmsvcrt-ruby191.dll のDllMain@12をエクスポートしちゃってるので msvcrt-ruby191.dllをリンクしたプログラムがMingwスタートアップのDllMainではなく rubyのdllが公開している方をリンクしてしまうからです rc2からp0になってmsvcrt-ruby191.defの生成法が変わった影響のようです 従来は win32/mkexports.rb によって生成されていたのが cygwinと共通の生成方式が新設されているようです C言語環境の知識はあまりありませんが (特にWindowsのdllシステムやらMingwのdllの扱い方やらはよくわからない) DllMainなんて公開しちゃだめなんじゃないですか? ランタイムのエントリルーチンから呼び出される関数ですよね そもそもが自分で定義するか、そうでなければ デフォルトのDllMain関数がリンクされるもののはずなので よそのdllの初期化関数を呼び出すのはまずいでしょう
|

|