[Gambas-user] external function call

Doriano Blengino doriano.blengino at ...1909...
Tue Feb 3 20:05:17 CET 2009


Wally ha scritto:
> Do anybody have (or know where to find) an example code 
> using an external function call to a shared library.
> (e.g. a math lib or something common)
>   
Just an excerpt from a ldap module, which interfaces with libldapxxx:

LIBRARY "libldap:2"

' to initialize the ldap client library

PRIVATE EXTERN ldap_init(host AS String, port AS Integer) AS Pointer

' to bind (login) into the ldap server

PRIVATE EXTERN ldap_simple_bind_s(ldconn AS Pointer, who AS String, passwd AS String) AS Integer

' to unbind *and* terminate

PRIVATE EXTERN ldap_unbind(ldconn AS Pointer) AS Integer

' to provide useful text messages for errors

PRIVATE EXTERN ldap_err2string(err AS Integer) AS Pointer

' ?

PRIVATE EXTERN ldap_result2error(ldconn AS Pointer, PLDAPMessage AS Pointer, freeit AS Integer) AS Integer

' the search function to get results

PRIVATE EXTERN ldap_search_s(ldconn AS Pointer, base AS String, scope AS Integer, filter AS String, attrs AS Pointer, attrsonly AS Integer, res AS Pointer) AS Integer

' they were: LDAP* ld;  char* base;  Int scope;  char* filter, *attrs[],  Int attrsonly;  LDAPMessage** res;



The ldap_init() is called this way:
PUBLIC SUB _new(host AS String)
  max_results = 100
  conn = ldap_init(host, 389)
  IF conn = NULL THEN error.Raise("Can not init ldap library")

The ldap_simple_bind() is called this way:
PUBLIC SUB bind(who AS String, passwd AS String) AS Integer
  DIM res AS Integer

  ldap_bounded = FALSE
  res = ldap_simple_bind_s(conn, who, passwd)
  lasterr = StrPtr(ldap_err2string(res))
  IF res = 0 THEN
    ' anonymous bind?
    IF who <> "" THEN ldap_bounded = TRUE
  ENDIF
  RETURN res
END


-- 
Doriano Blengino

"Listen twice before you speak.
This is why we have two ears, but only one mouth."





More information about the User mailing list