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にインクルードパスを強制設定してみる

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です