Jake is correct — the ENABLE_DRAFTS flag is used when *building* ZeromMQ, not 
when linking against the library.

Where did your ZeroMQ come from?  Did you build it from source, or take a 
pre-packaged build?  If the latter, it was likely built *without* draft 
support, and you will need to install a different package that was built *with* 
draft support.


> On Sep 26, 2018, at 10:55 AM, Jake <jake.c...@gmail.com> wrote:
> 
> ZeroMQ itself needs to be compiled with ENABLE_DRAFTS in CMake.  You've added 
> it to the compiler flags when building your own application.  Did you compile 
> ZeroMQ yourself or are you using a distro-provided version?
> 
> For the static library, one way is to give the full path to the .a file 
> instead of using -lzmq.  gcc default behavior prefers the shared object when 
> both are present.
> 
> -Jake
> 
> 
> On Wed, Sep 26, 2018 at 10:51 AM Stephan again <op...@vs.uni-kassel.de 
> <mailto:op...@vs.uni-kassel.de>> wrote:
> Hi Bill,
> 
> adding -DENABLE_DRAFTS=On does not help:
> 
> g++ Discovery.cpp -lzmq -DZMQ_BUILD_DRAFT_API=1 -DENABLE_DRAFTS=On -o test
> 
> I also checked my installed libraries with "nm -gC <library | grep 
> zmq_msgs_group":
> 
> /usr/lib/x86_64-linux-gnu/libzmq.a -> match
> /usr/lib/x86_64-linux-gnu/libzmq.so -> no match
> /usr/lib/x86_64-linux-gnu/libzmq.so.5 -> no match
> /usr/lib/x86_64-linux-gnu/libzmq.so.5.1.5 -> no match
> 
> I am not so into this dynamic and static library stuff, but my build chain is 
> linking agains "/usr/lib/x86_64-linux-gnu/libzmq.so". Is that the problem? 
> How do I force it on command line to link against the static version.
> 
> Kind Regards
> 
>   Stephan
> 
> On 26.09.2018 16:08, Bill Torpey wrote:
>> Hi Stephan:
>> 
>> The RADIO/DISH sockets are considered DRAFT, which is probably why you’re 
>> getting these errors.
>> 
>> There are a couple of possibilities:
>> 
>> - You may be linking against a version of libzmq that doesn’t include the 
>> draft APIs.  In order to build with draft support, the build needs to 
>> specify "-DENABLE_DRAFTS=On” on the cmake command line.  Make sure your 
>> libzmq was built with support for the draft APIs.
>> 
>> 
>> - You also need to enable draft APIs in your code, similar to following:
>> 
>> #define ZMQ_BUILD_DRAFT_API
>> #include <zmq.h>
>> 
>> The #define makes the draft APIs visible to your code.
>> 
>> (Never mind — you’re already doing this on the compile command).
>> 
>> Hope this helps.
>> 
>> Bill
>> 
>>> On Sep 26, 2018, at 9:13 AM, Stephan again <op...@vs.uni-kassel.de 
>>> <mailto:op...@vs.uni-kassel.de>> wrote:
>>> 
>>> Hi,
>>> 
>>> I asked this question/issue one and a half year ago 
>>> (https://lists.zeromq.org/mailman/private/zeromq-dev/2017-January/031309.html
>>>  
>>> <https://lists.zeromq.org/mailman/private/zeromq-dev/2017-January/031309.html>).
>>>  The difference is that I now would like to use zeromq (draft api) version 
>>> 4.2.5 under Ubuntu 18.04.
>>> 
>>> My minimal (not) working example can be found here: 
>>> https://gist.github.com/StephanOpfer/5b9f3f76e6610536078cb9c16072aac9 
>>> <https://gist.github.com/StephanOpfer/5b9f3f76e6610536078cb9c16072aac9>
>>> 
>>> Compiling it with this command:
>>> 
>>>     g++ Discovery.cpp -lzmq -DZMQ_BUILD_DRAFT_API=1 -o test
>>> 
>>> produces this:
>>> 
>>>     /tmp/ccUwelWs.o: In function `msg_send(zmq_msg_t*, void*, char const*, 
>>> char const*)':
>>>     Discovery.cpp:(.text+0x8e): undefined reference to `zmq_msg_set_group'
>>>     /tmp/ccUwelWs.o: In function `msg_recv_cmp(zmq_msg_t*, void*, char 
>>> const*, char const*)':
>>>     Discovery.cpp:(.text+0x148): undefined reference to `zmq_msg_group'
>>>     /tmp/ccUwelWs.o: In function `main':
>>>     Discovery.cpp:(.text+0x30e): undefined reference to `zmq_leave'
>>>     Discovery.cpp:(.text+0x37f): undefined reference to `zmq_join'
>>>     Discovery.cpp:(.text+0x3c3): undefined reference to `zmq_join'
>>>     Discovery.cpp:(.text+0x407): undefined reference to `zmq_join'
>>>     Discovery.cpp:(.text+0x57c): undefined reference to `zmq_join'
>>>     Discovery.cpp:(.text+0x668): undefined reference to `zmq_leave'
>>>     collect2: error: ld returned 1 exit status
>>> 
>>> Any help is welcome. :)
>>> 
>>> Kind Regards
>>> 
>>>   Stephan
>>> 
>>> 
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
>>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
>>> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
>> 
>> 
>> 
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
>> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
> 
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev

_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to