C ++ с использованием ldap_bind из ldap.h - PullRequest
5 голосов
/ 12 марта 2011

Я пытаюсь использовать ldap_bind, но получаю эту ошибку.

error: âldap_bindâ was not declared in this scope

код:

#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;
}

Я компилирую с этой командой

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

1010 * ТИА *

Ответы [ 4 ]

2 голосов
/ 12 марта 2011

У меня нет опыта работы с OpenLDAP, но из шапки кажется, что вам нужно:

extern "C" {
# define LDAP_DEPRECATED
# include <ldap.h>
# include <lber.h>
}
1 голос
/ 15 марта 2013

Не используйте ldap_bind. Его не рекомендуется. Скорее используйте ldap_sasl_bind.
ldap.h устарел для многих функций по большей части из соображений безопасности

Проверьте следующую команду, в которой перечислены все устаревшие функции

grep deprecate < /usr/include/ldap.h
1 голос
/ 20 июля 2012

Это приводит к некоторым ошибкам компиляции в текущей версии, поскольку в ldap.h используйте #if LDAP_DEPRECATED вместо #ifdef, присвойте MACRO значение:

#define LDAP_DEPRECATED 1

И это хорошо.

0 голосов
/ 17 апреля 2014

В * nix системах или в любой системе, в которой вы можете указать флаги компиляции, вы можете добавить следующее в свой список флагов:

-DLDAP_DEPRECATED  

Это позволяет вам использовать устаревшие устаревшие функции без необходимости добавлять определения в начало всех ваших исходных / заголовочных файлов.

...