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
