I'm creating a C++ DLL using Visual Studio 2012 and would like to use ZeroMQ
libraries in it.  I've basically taken the ZeroMQ example 'hwserver' Hello
World Server and adapted it into a header file for use within my DLL (Code
below).  Problem is that I get hundreds of warnings and errors when trying
to build the DLL;  the errors are repetitious referring to many different
elements of the same header files:

 

Winsock2.h ...redeclaration cannot add dllexport/dllimport...

winsock2.h  Macro redefinitions.

ws2def.h  type redefinitions

 

etc etc etc....

 

and sample errors below:

 

Warning               26           warning C4005: 'SOMAXCONN' : macro
redefinition         C:\Program Files (x86)\Windows
Kits\8.0\Include\um\winsock2.h              506         1 TestDataAccess

 

125         IntelliSense: redeclaration cannot add dllexport/dllimport to
"WSAUnhookBlockingHook" (declared at line 879 of "C:\Program Files
(x86)\Windows Kits\8.0\Include\um\winsock.h")        c:\Program Files
(x86)\Windows Kits\8.0\Include\um\WinSock2.h             2381       1
TestDataAccess

 

79           IntelliSense: expected an identifier         c:\Program Files
(x86)\Windows Kits\8.0\Include\shared\ws2def.h         414                5
TestDataAccess

 

Error      63           error C2375: 'WSAStartup' : redefinition; different
linkage            C:\Program Files (x86)\Windows
Kits\8.0\Include\um\winsock2.h              2296       1 TestDataAccess

 

 

I've already experimented with the ZeroMQ examples 'hwserver' Hello World
Server & `hwclient` Hello World Client.  I can get the exe application files
for these examples to build and run OK on my PC (Same machine as I'm using
for the DLL).

 

 

It's clear that something is significantly wrong here; does anyone know what
it could be?  Or what steps are needed to build a DLL in Visual Studio 2012
using the ZeroMQ libraries. (Note: I've used Boost libraries in the same
manner, for a DLL, without all this trouble!)

 

 

Hope you can help,

 

With thanks,

 

Riskybiz.

 

Code I'm trying to build in a DLL:

 

 

#ifndef ZMQ_COMMUNICATIONS_H//if not defined already

#define ZMQ_COMMUNICATIONS_H//then define it

 

#include <zmq.hpp>

 

void ListenOnReplySocket()

{

//  Prepare our context and socket

    zmq::context_t context (1);

    zmq::socket_t socket (context, ZMQ_REP);

    socket.bind ("tcp://*:5555");

 

while (true)

{

        zmq::message_t request;

 

        //  Wait for next request from client

        socket.recv (&request);

 

char buffer[50];

int j;

j = sprintf_s(buffer, 50, "TestDataAccess: ZMQComms: Hello");

OutputDebugStringA(buffer);

       

 

        //  Do some 'work'

        Sleep (1);

 

        //  Send reply back to client

        zmq::message_t reply (5);

        memcpy ((void *) reply.data (), "World", 5);

        socket.send (reply);

    }

}

#endif

 

 

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

Reply via email to