Visual C++ 6.0 SP6 でも LAME 3.100 のコンパイルは通り、リンクエラーが 2つ出るだけなので、それを潰せば問題は解決します
ではどうするかですが、問題が起きてるのはエンジン部分ではなく「フロントエンド」なので少々テキトーな対処をしても問題は殆どありません
まあ、今回は Windows の VC++ 6.0 SP6 でビルド完了することしか考えないという超不まじめな方法を取るのですが……
まず、frontend/main.c で何故かリリースビルドなのにデバグが有効になっちゃってる問題ですが、面倒くさいので main.c の初めの方で “#define NDEBUG” しちゃえば回避できます
もう一つの問題は、strnlen が無いのでリンクのしようがないということ
これは、frontend/parse.c で発生するのですが、#include が一通り終わったところに strnlen 互換関数を書いておけば問題がなくなります (ひどい対処療法である)
で、自分で実装するとバグが怖いので、Web で公開されている実装をそのまま書いておくのが無難です
strnlen の実装例 を検索すると、概ね 2種類が見つかります
■ 自己完結実装例 [fc2.com]
■ memchr を使用した実装 [bvbcode.com]
どちらでも結果は同じなので (速度は違うと思う)、好きな方を使えば良いと思います (頻繁に呼ばれるわけではないので、深く考えなくていいです)
で、ソースを修正したら、VC++ 6.0 SP6 の VCVARS32.bat を実行後 “nmake -f Makefile.MSVC CPU=P3” でビルドできます (※ nasm にパスを通しておく必要があります)
そう、「バイナリの配布しても問題ないじゃないか……」 というのに気づきました
まあ、コンソール版 LAME を使う人って超少数派だったりするので、需要は低いですけどね
気が向いたら、今回ビルドした LAME 3.100 のバイナリ、アップローダに掲載しておくかなぁ…… (← 多分やらない)
多分、今更 VC++ 6.0 SP6 で Make する人がいないせいで、修正もされずに放置されているのですが、たったこれだけで Make できちゃうのが……
これ、
セコメントをする