丁稚な日々

Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...

[直前] [最新] [直後] [Top]

Oct.28,2010 (Thu)

Revision: 1.1 (Oct.28,2010 17:24)

[mswin64] libffi

_ DLは周知の通りx64上ではcallbackが正常に動作しない。
ので、好む/好まざるにかかわらず、x64ではlibffi+fiddleを使わざるを得ない。

_ というわけでmswin64用のlibffiの作り方。

  1. 当然だけどx64向けのcl.exe等が動作するよう環境設定を行っておく。
  2. どっかからVC++対応したlibffiを拾ってくる。
  3. 適切なシェルから configure --enable-shared --enable-static CC='msvcc.sh -m64' LD=link CPP='cl -nologo -EP' --build=x86_64-mingw32 を実行。
    なお、x86_64-mingw32などと指定してるのはx64版mswin64用ですよ〜、という意味であって、mingwを使ってビルドするという意味ではない。
  4. 生成されるlibtoolファイルには余計なことをするバグがあるので、fix_srcfile_pathを設定している行を fix_srcfile_path="\$srcfile" に変更する。
  5. include/ffitarget.h がリンクとして作成されるが、たぶん適切ではないので削除して、改めて src/x86/ffitarget.h を include/ の下にコピーする。
  6. GNU makeを使ってmake。

ひょっとすると型変換がらみでエラーが出るかもしれないので、その場合は適当にソースを修正すること。


被捕捉アンテナ類
[Ant] [Antenna-Julia] [Rabbit's Antenna] [Ruby hotlinks]