2011-03-12 14 views
5

ldap_bind'i kullanmaya çalışıyorum ama bu hatayı al.C++ ldap.h kullanarak ldap.h

error: âldap_bindâ was not declared in this scope 

kodu:

#include <lber.h> 
#include <ldap.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    LDAP *ld; 

    char *ldap_host = "ldap://localhost"; 
    int ldap_port = 389; 
    int auth_method = LDAP_AUTH_SIMPLE; 
    int desired_version = LDAP_VERSION3; 
    char *root_dn = "ou=people,dc=localhost,dc=local"; 
    char *root_ps = "password"; 

    int result; 

    result = ldap_initialize(&ld, ldap_host); 

    cout << "result: " << result << endl; 

    result = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &desired_version); 

    cout << "result: " << result << endl; 

    result = ldap_bind_s(ld, root_dn, root_ps, auth_method); 

    cout << "result: " << result << endl; 
} 

Ben bu komutla derleme

g++ ldap.cpp -llber -lldap -o prog 

TIA

cevap

2

Ben OpenLDAP ile hiçbir deneyimi var, ancak başlığından sizi görünüyor ihtiyaç:

extern "C" { 
# define LDAP_DEPRECATED 
# include <ldap.h> 
# include <lber.h> 
} 
+0

Kodu inceledikten sonra, LDAP_DEPRECATED tanımlamak zorunda kaldım, bu yüzden doğru. Teşekkürler – Jeremiah

+0

@Jeremiah: bunu mangaya koymadıkları için utanç verici. –

1

O ldap.h kullanım yerine #ifdef arasında #if LDAP_DEPRECATED yılında beri geçerli sürümünde bazı derleme hataları yol açar makro bir değer vermek:

#define LDAP_DEPRECATED 1 

Ve gitmek iyidir.

1

ldap_bind'i kullanmayın. Onun kullanımdan kaldırılmış. Daha çok ldap_sasl_bind kullanın.
ldap.h çoğunlukla güvenlik nedenleriyle

Kontrol dışarı kaldırılan tüm fonksiyonları * Nix sistemlerde

grep deprecate < /usr/include/ldap.h 
0

veya derleme belirtmek bakalım herhangi bir sistem listeler aşağıdaki komutu için bir çok fonksiyonu onaylamamıştır bayraklar, sen bayrakları listenize aşağıdaki ekleyebilirsiniz: Bu, kaynak/Heade tüm üstüne tanımlarınızı gerek kalmadan kaldırılmış onaylanmamış özellikleri kullanmanıza olanak sağlar

-DLDAP_DEPRECATED 

r dosyaları.