BIND をコンパイルしたときに遭遇した問題と解決方法
基本 win32utils の中のバッチファイルでコンパイルできるのですが、それでもうまくいかない時のTipsです
1. nmake.exe が見つからない
BuildSetup.bat の先頭でVC++のパスを通す。
2. config.h が見つからない
config.h.win32 を探して config.h にコピーする
(普通はBuildSetup.bat で実行される)
3. \lib\isc\win32\include\isc\net.h(114) : error C2011: 'in6_pktinfo' : 'struct' で示される型としてすでに定義されています。
\include\ws2tcpip.h(403) : 'in6_pktinfo' の宣言を確認してください。 が大量に表示される
ws2tcpip.h の
typedef struct in6_pktinfo {
IN6_ADDR ipi6_addr; // destination IPv6 address
UINT ipi6_ifindex; // received interface index
} IN6_PKTINFO;
の後に #define ISC_PLATFORM_HAVEIN6PKTINFO を追加する
4. versions.h が見つからない
makeversions.pl を実行する (PERLが必要)
(普通はBuildSetup.bat で実行される)
5. types.h が見つからない
makedefs.pl を実行する
(普通はBuildSetup.bat で実行される)
6. OpenSSL 関連のファイルが見つからない
ftp://mirror.switch.ch/mirror/openssl/source/
ここでソース入手
inc32 フォルダをインクルードパスに設定
out32dll をライブラリパスに指定
7.error C2065: 'dns_rdata_ptr_t' : 定義されていない識別子です。 が出る
enumtype.h の中身が生成されてるか確認
(普通はBuildSetup.bat で実行される)
8. なぜかgen.exe ができてない
LINK32_FLAGS に /LIBPATH:ライブラリパス CPP_PROJにインクルードパスを強制設定してみる
Comments