C++使用 ldap.h 中的 ldap_bind

发布于 2024-10-21 14:23:16 字数 1056 浏览 1 评论 0原文

我正在尝试使用 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进行编译

I'm trying to use ldap_bind, but get an this error.

error: âldap_bindâ was not declared in this scope

code:

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

I'm compiling with this command

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

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

埋情葬爱 2024-10-28 14:23:16

我没有使用 OpenLDAP 的经验,但从标题看来你需要:

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

I've no experience with OpenLDAP, but from the header it seems you need:

extern "C" {
# define LDAP_DEPRECATED
# include <ldap.h>
# include <lber.h>
}
失眠症患者 2024-10-28 14:23:16

它会导致当前版本中的一些编译错误,因为在 ldap.h 中使用 #if LDAP_DEPRECATED 而不是 #ifdef,给 MACRO价值:

#define LDAP_DEPRECATED 1

而且很好走。

It leads to some compiling errors in current version, since in the ldap.h use #if LDAP_DEPRECATED instead of #ifdef, give the MACRO a value:

#define LDAP_DEPRECATED 1

And it is good to go.

烟雨凡馨 2024-10-28 14:23:16

不要使用 ldap_bind。它已被弃用。而是使用ldap_sasl_bind
出于安全原因,ldap.h 已弃用了许多函数。

查看以下命令,其中列出了所有已弃用的函数

grep deprecate < /usr/include/ldap.h

Dont use ldap_bind. Its deprecated. Rather use ldap_sasl_bind.
ldap.h has deprecated a lot of functions for mostly security reasons

Check out the following command which lists all the deprecated functions

grep deprecate < /usr/include/ldap.h
靖瑶 2024-10-28 14:23:16

在 *nix 系统或任何允许您指定编译标志的系统上,您可以将以下内容添加到标志列表中:

-DLDAP_DEPRECATED  

这允许您使用已弃用的已弃用功能,而无需将定义添加到所有源代码/标头的顶部文件。

On *nix systems, or any system that let's you specify compilation flags, you can add the following to your list of flags:

-DLDAP_DEPRECATED  

This allows you to use the deprecated deprecated features without having to add defines to the top of all of your source/header files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文