Zabbix 1.8のWindowsエージェントをコンパイルしようとしたところ、いろいろと壁にぶつかりました。
Zabbix 1.8のリリースファイルにeventlog.c/hが含まれていない
Zabbix SIAのリリースファイル(zabbix-1.8.tar.gz)のsrc/zabbix_agentディレクトリにはeventlog.c/hが含まれていないために以下のようなエラーが出てコンパイルが通りません。
Subversionの方には含まれているので、何らかの理由でリリース用のtar.gzファイルを作成するときに削除されてしまったようです。(なぜそんなことになってしまったのかは不明ですが)
active.c(28) : fatal error C1083: include ファイルを開けません。'eventlog.h': No such file or directory
Subversionからeventlog.c/hをダウンロードしてディレクトリに配置してコンパイルを行うと、とりあえず上記エラーは出なくなります。
afxres.hのincludeエラー
上記対応をしても今度は以下のエラーが出るようになります。
fatal error C1083: include ファイルを開けません。'afxres.h': No such file or directory
ネットを検索するとVS2008 Express Editionを使っている場合はeventlog.cを以下のように書き換えればいいよ、ということのようだけど、修正点が理解できていないのでこれが正しいのかどうかは分からないです。
75 //#include "afxres.h" ← コメントアウト
76 #include ← 追加
77 #defind IDC_STATIC -1 ;← 追加
ひとまず上記でコンパイルは通りました。あとでVS2008のGUI画面の方からコンパイルしたところafxres.hエラーは出なかったので、コマンドラインからコンパイルしたときにライブラリのパスが通っていなかっただけかもしれません。
zbx_read関数のリンクエラー
最終的にはこのエラーにたどり着きました。
logfiles.obj : error LNK2019: 未解決の外部シンボル _zbx_read が関数 _process_logrt で参照されました。
file.obj : error LNK2001: 外部シンボル "_zbx_read" は未解決です。
../../../bin/win32/zabbix_agentd.exe : fatal error LNK1120: 外部参照 1 が未解決です。
ただいま原因を調査中です...