5

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

TIA

4

4 に答える 4

2

私はOpenLDAPの経験はありませんが、ヘッダーからは次のことが必要なようです。

extern "C" {
# define LDAP_DEPRECATED
# include <ldap.h>
# include <lber.h>
}
于 2011-03-12T14:03:13.360 に答える
1

の代わりにldap.h使用する場合は、MACROに次の値を指定するため、現在のバージョンではコンパイルエラーが発生します。#if LDAP_DEPRECATED#ifdef

#define LDAP_DEPRECATED 1

そして、行くのは良いことです。

于 2012-07-19T20:24:54.580 に答える
1

ldap_bindは使用しないでください。その非推奨。むしろ使用してldap_sasl_bindください。
ldap.hは、主にセキュリティ上の理由から多くの機能を廃止しました

非推奨のすべての機能を一覧表示する次のコマンドを確認してください

grep deprecate < /usr/include/ldap.h
于 2013-03-15T11:37:26.430 に答える
0

* nixシステム、またはコンパイルフラグを指定できるシステムでは、フラグのリストに以下を追加できます。

-DLDAP_DEPRECATED  

これにより、すべてのソース/ヘッダーファイルの先頭に定義を追加しなくても、非推奨の非推奨機能を使用できます。

于 2014-04-17T00:41:26.340 に答える