log4cxx を bcc で使えるようにしてみた

昨日のエントリに思い切り嘘を書いてしまいました。log4cxx の msvc 用のプロジェクトは、 DLL プロジェクトになっていました。

会社に来てから思い出しましたが、なぜか Unicode 版のプロジェクトしかコンパイルできず、それを bcc から呼び出したらメッセージが文字化けしてどうにもいかなくなって諦めていたのでした。では通常版をコンパイルできるようにすればいいか、と再挑戦。すると以前通っていた箇所でいきなりコンパイルが止まってしまいました。

エラーメッセージには、オブジェクトファイルが見つからない、とある。そこで出力されるフォルダ名が途中で切れていたりするので、フォルダ名にスペースが入っているのがいけないのかなあ……とスペースを含まないフォルダに入れたら全てうまくいってしまいました。なんで、うまくいくときといかないときがあるんでしょうか……。

できた dll から、 bcb 付属の implib.exe を使って lib を生成してリンクし、適当にログを取るコードを書いてコンパイルしてみましたが、リンクで失敗してしまいました。名前解決がうまくできていない様子。これを解決するのはかなり手間がかかりそうなので、 log4cxx を呼び出す dll を VC で作成して、その dll を bcc から呼び出して間接的に使用するような形にしてみました。えらい面倒くさかったですが、なんとか出力はできるようになったようです。

設定は log4j コンパチな設定ファイルを読ませれば、コード上から Appender の切り替えなどはしなくてよくなるはずなので、一旦作ってしまえば色々使いまわしは利きそう。