Hi Szalay,
I have tried the same as you mentioned, linked code against zookeeper_mt  
library but still I am not able to call the API’s present under #ifdef 
THREADED. When I comment this ifdef then I am able to call the API’s. Getting 
the same error as mentioned below.
Also I have to use ssl support which is defined like this in zookeeper.h

#ifdef HAVE_OPENSSL_H
ZOOAPI zhandle_t *zookeeper_init_ssl(const char *host, const char *cert, 
watcher_fn fn,
int recv_timeout, const clientid_t *clientid, void *context, int flags);
#endif

While building library with maven, it was mentioned that -Dc-client-openssl has 
default value yes. But still I am not able to call zookeeper_init_ssl API.
Looks like the API’s defined under ifdef I am not able to call that.
I am attaching zookeeper.spec which I use to make libzookeeper and 
libzookeeper-devel libraries.
Please help me in defining those ifdef THREADED and HAVE_OPENSSL_H variables.

Thanks.
Pankaj



>Hello Pankaj,



>ZooKeeper C client provides two different APIs, a sync (multithreaded) and

>an async (single threaded).

>If you want to use the sync API (multi threaded) then make sure to link

>your application code against the zookeeper_mt library.



>When compiling the ZooKeeper C client code, you can set if you want to also

>build the zookeeper_mt library. Depending on your preferred build tool:

>- cmake: use the -DTHREADED cmake option to enable sync API build

>- make: use the "./configure --without-syncapi" to disable the sync API

>build



>normally I just use "mvn clean install -DskipTests -Pfull-build" command to

>build both the java and C code, which will build both the sync and async

>zookeeper libraries.



>This readme file should help, although I am not 100% sure it is totally

>up-to-date :)

>https://github.com/apache/zookeeper/tree/master/zookeeper-client/zookeeper-client-c



>Kind regards,

>Mate

From: Pankaj Kumar <[email protected]>
Date: Friday, 5 June 2020 at 5:19 PM
To: "[email protected]" <[email protected]>
Subject: How to use -DTHREADED compile option while compiling

Hi,
I was making libzookeeper and libzookeeper-devel for latest zookeeper release 
3.6.1.
In our software we are making some api calls, however some api calls are giving 
error:-


error: ‘zoo_create’ was not declared in this scope

             path_buffer_len);

                            ^

error: ‘zoo_delete’ was not declared in this scope

         return zoo_delete(zh, path, version);



error: ‘zoo_get’ was not declared in this scope

         return zoo_get(zh, path, watch, buffer, buffer_len, stat);

                                                                 ^

error: ‘zoo_exists’ was not declared in this scope





Then after looking into latest library code and found that these calls are 
defined under #define THREADED
And for this thing to work I have to compile zookeeper C client with -DTHREADED 
option.

What I want to ask that How can I enable this compile -DTHREADED option. I have 
tried this with “make” command and “./configure” command, but couldn’t proceed 
further.

Can someone please help me on how to use DTHREADED option?

Thanks,
Pankaj


Juniper Business Use Only

Reply via email to