langscan/java/java.so

コンパイラはVisual C++ 6.0。mingwgccでもいいらしいけど、俺VC++持ってるし。

  • プロジェクトの設定の「設定の対象」を「Win32 Debug」以外にすること
  • デバッグする気はないのでアクティブな構成はReleaseで
    リンクするCランタイムとかではまりたくないし
  • 「出力ファイル」は「src\langscan\java」。って、これは俺だけか
  • あとはC/C++
  • プリプロセッサのシンボルに「YY_NO_UNISTD_H」を入れないと#include<unistd.h>で怒られる
  • リンクに「msvcrt-ruby18.lib」を入れるのを忘れない
  • あとVC自体のオプションでincludeとかlibとかのパスを設定しておく
  • 昔はソースコードを書き換えて全部declspec(dllexport)とかしてたけど、defファイルという便利なものがあるらしい*1。これは駱駝、違った楽だ。

そういうわけで、

irb(main):001:0> require 'langscan/java'
LoadError: no such file to load -- langscan/pairmatcher/pairmatcher
        from ./langscan/_pairmatcher.rb:13:in `require'
        from ./langscan/_pairmatcher.rb:13
        from ./langscan/java.rb:14:in `require'
        from ./langscan/java.rb:14
        from (irb):1:in `require'
        from (irb):1
irb(main):002:0>

次はpairmatcherか。