Full_Name: Louis Solomon Version: 2.4.39 OS: Win32 & Win64 URL: Submission from: (NULL) (59.167.196.195)
1) in libraries/libldap/ldif.c move int ldif_debug = 0; to after _all_ the includes. Why? because the linker gets confused with it being declared as declspec(dllexport). Order matters.
2) in include/ac/socket.h EWOULDBLOCK, EINPROGRESS, ETIMEDOUT (lines 101-103) conflict with the windows header files. simply wrap with any rational choice of ifdef/ifndef
3) in include/ldap_utf8.h wrap prototypes for ldap_x_utf8_to_wc (line 61) through to ldap_x_mbs_utf8s (line 99) with #if SIZEOF_WCHAR>=4 to match the ifdef at the top of utf-8-conv.c. Why? because the linker tries to export them as they are defined in the header with declspec(dllexport) but are not in any .o/.obj
4) in include/ldap_cdefs.h the usage of __declspec(dllexport/dllimport) is not quite right ... should be like
#if defined(_WIN32) ... # define LDAP_F(type) __declspec(dllimport) type # define LDAP_V(type) extern __declspec(dllimport) type #else # define LDAP_F(type) __declspec(dllexport) type # define LDAP_V(type) extern __declspec(dllexport) type #endif
and of course the same for each of the other sets (LBER, LDAP, LDAP_AVL, LDAP_LDIF, etc)
With the above patches and making the appropriate .h files from .hin files manually and then creating VS2012 project files, I was successfully able to create and use liblber, libldap, libldap_r as .dlls