[英]C++ using ldap_bind from ldap.h
我正在尝试使用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
我没有使用OpenLDAP的经验,但从标题看,您似乎需要:
extern "C" {
# define LDAP_DEPRECATED
# include <ldap.h>
# include <lber.h>
}
它导致当前版本中的一些编译错误,因为在ldap.h
使用#if LDAP_DEPRECATED
而不是#ifdef
,给MACRO一个值:
#define LDAP_DEPRECATED 1
去吧很好。
不要使用ldap_bind。 它被弃用了。 而是使用ldap_sasl_bind
。
ldap.h主要出于安全原因弃用了许多函数
查看以下命令,其中列出了所有已弃用的函数
grep deprecate < /usr/include/ldap.h
在* nix系统或任何允许您指定编译标志的系统上,可以将以下内容添加到标志列表中:
-DLDAP_DEPRECATED
这允许您使用已弃用的已弃用功能,而无需在所有源/头文件的顶部添加定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.