首先,至少需要有Berkeleydb和Cyrus SASL
如果需要tls,還要有openssl
openldap自從2.2x版以後就不在提供移植到windows下的工程檔案了,但是它裡面還是有有這方免得考慮,移植起來還是可以實現的。經過兩三天的實驗,我已經把其中的幾個比較重要的庫編譯出來了,下面介紹下這個在windows下編譯openldap的過程。我的編譯環境是win xp, VC 6.0,另外我還用到了cygwin,其實並不重要,只是為了要把那些在linux下產生的代碼拷貝過來。
1、編譯liblber
(1)建立靜態連結庫工程檔案,取名為liblber
(2)匯入4個標頭檔到openldap\include中:
lber_types.h
ldap_config.h
ldap_features.h
portable.h
(2)匯入librares\liblber中的檔案,可以不用包括idtest.c, dtest.c和etest.c
(3)關閉宏:
TIME_WITH_SYS_TIME
HAVE_SYS_TIME_H
LDAP_SYSLOG
HAVE_LONG_LONG
HAVE_POLL_H
HAVE_GETOPT_H
HAVE_GETOPT
HAVE_SYS_IOCTL_H
HAVE_FCNTL
HAVE_NONPOSIX_STRERROR_R
HAVE_STRERROR_R
HAVE_STRERROR
開啟宏:
HAVE_WINSOCK2
HAVE_WINSOCK2_H
HAVE_WINSOCK_H
HAVE_WINSOCK
(4)把所有的long long 型定義都改成unsigned long型
(5)編譯,產生liblber.lib
2、編譯libldap
(1)建立靜態連結庫工程libldap
(2)匯入libraries\libldap中檔案,除了dntest.c ftest.c test.c這些測試工程
(3)關閉宏:
HAVE_SYS_PARAM_H
HAVE_ARPA_NAMESER_H
HAVE_SYS_FILE_H
HAVE_RESOLV_H
HAVE_RES_QUERY
HAVE_TLS
HAVE_POLL
HAVE_TLS
HAVE_SYSCONF
HAVE_SYS_UIO_H
LDAP_PF_LOCAL
HAVE_DIRENT_H
HAVE_HSTRERROR
HAVE_GETDTABLESIZE
HAVE_INET_ATON
開啟宏:
#define socklen_t int
在portable.h中加入下面兩行:
#define strcasecmp stricmp
#define strncasecmp strnicmp
(4)編譯,產生libldap.lib
3、編譯liblutil
(1)建立靜態庫工程liblutil
(2)匯入libraries\liblutil中的檔案,但不匯入detach.c
(3)關閉宏:
HAVE_FLOCK
HAVE_SIGACTION
URANDOM_DEVICE
在portable.h後面加上以下四行:
#define PROV_RSA_FULL 1
typedef unsigned long HCRYPTPROV;
typedef unsigned long DWORD;
typedef unsigned char BYTE;
(4)編譯,產生liblutil.lib
基本上如果要開發用戶端的話,把這三個庫編出來似乎就可以了,我試了試,一般的增、刪、改、查都可以了,注意開發用戶端時,除了要串連這幾個庫,還要有libsasl.lib和ws2_32.lib這些庫,可能還會有wsock32.lib吧,如果串連不過可以試試。。。
有什麼不足之處,希望大家指正。多多發言啊,臭雞蛋鮮花一塊上,什麼我都要,哈哈