本当は解決済みだった(LNK2019: 未解決の外部シンボル)
trace_nums.cだが、取りあえずコンパイルを通すことだけは出来た。
変更点は以下の通り(trace_nums.c.diff)
42,43c42,43 < NODE *ruby_eval_tree_begin; < int ruby_in_eval;
-
- -
ちょっと冷静になればruby_eval_tree_beginとruby_in_evalが外部で既に宣言されているのはすぐに解ったはずだが、「未解決」という言葉に惑わされてこんなに回り道してしまった。Cでの経験の少なさが全てだろうな。
あれほど通らなかったビルドはあっさりと通るようになった。
E:\ruby_build_image\linecache-0.43>nmake all clean Microsoft(R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. cl -nologo -I. -Ie:/ruby/lib/ruby/1.8/i386-mswin32_80 -Ie:/ruby/lib/ruby/1.8/i386-mswin32_80 -Iext -MD -O2b2xty- -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tcext/trace_nums.c trace_nums.c cl -nologo -LD -Fetrace_nums.so trace_nums.obj msvcr80-ruby18.lib oldnames.lib user32.lib a dvapi32.lib shell32.lib ws2_32.lib -link -incremental:no -debug -opt:ref -opt:icf -dll -libpath:". " -libpath:"e:/ruby/lib" -implib:trace_nums-i386-mswin32_80.lib -pdb:trace_nums-i386-mswin32_80.pdb -def:trace_nums-i386-mswin32_80.def ライブラリ trace_nums-i386-mswin32_80.lib とオブジェクト trace_nums-i386-mswin32_80.exp を作成中 mt -nologo -manifest trace_nums.so.manifest -outputresource:trace_nums.so;2 E:\ruby_build_image\linecache-0.43>nmake install Microsoft(R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. cl -nologo -I. -Ie:/ruby/lib/ruby/1.8/i386-mswin32_80 -Ie:/ruby/lib/ruby/1.8/i386-mswin32_80 -Iext -MD -O2b2xty- -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tcext/trace_nums.c trace_nums.c cl -nologo -LD -Fetrace_nums.so trace_nums.obj msvcr80-ruby18.lib oldnames.lib user32.lib a dvapi32.lib shell32.lib ws2_32.lib -link -incremental:no -debug -opt:ref -opt:icf -dll -libpath:". " -libpath:"e:/ruby/lib" -implib:trace_nums-i386-mswin32_80.lib -pdb:trace_nums-i386-mswin32_80.pdb -def:trace_nums-i386-mswin32_80.def ライブラリ trace_nums-i386-mswin32_80.lib とオブジェクト trace_nums-i386-mswin32_80.exp を作成中 mt -nologo -manifest trace_nums.so.manifest -outputresource:trace_nums.so;2 install -c -p -m 0755 trace_nums.so e:\ruby\lib\ruby\site_ruby\1.8\i386-msvcr80
しかし、正しいかどうかはまた別な問題。ひょっとしたら外部の変数を参照してはいけないのかもしれないし、trace_nums側でexternするのが正しいってことはあり得る訳だし作者の意図が分らない以上、推測でしかない。