Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

linking to a static 0MQ library in VS

This may be a Visual Studio question more than anything else...
I'm trying to build a 0MQ C++ example using VS10 and ZeroMQ 2.2.0.
I downloaded the windows sources and tried to follow these instructions in order to build 0MQ statically. Specifically:

  • Switched to Release
  • For all 7 projects in the solution:
    • set General\Configuration Type to Static library (.lib)
    • set C/C++\Code Generation\Runtime Library to Multi-threaded (/MT)
    • added ZMQ_STATIC to C/C++\Preprocessor\Preprocessor Definitions
  • Updated zmq.h and zmq_utils.h so that if _MSC_VER and ZMQ_STATIC are defined then DLL_EXPORT will also be defined

At this point 0MQ seems to build well.

  • Created an empty console project:
    • switched to Release
    • added a single cpp file with the example linked above
      • changed random to rand, srandom to srand and snprintf to _snprintf
    • set C/C++\Code Generation\Runtime Library to Multi-threaded (/MT)
    • added ...\zeromq-2.2.0\include folder to C/C++\General\Additional Include Directories
    • added ...\zeromq-2.2.0\builds\msvc\Release\*.lib to Linker\Input\Additional Dependencies

However I still receive the following linking errors:

1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_bind
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_close
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_errno
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_init
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_msg_data
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_strerror
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_socket
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_msg_init_size
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_term
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_msg_close
1>zmqexp.obj : error LNK2001: unresolved external symbol __imp__zmq_send

What have I missed?

like image 764
Jonathan Livni Avatar asked Apr 28 '12 21:04

Jonathan Livni


1 Answers

I had similar errors - not when trying to statically link, but just trying to create a ZMQ project and link the .lib 'stubs' for the dll.

In my case it was because I was trying to link the 64-bit libraries into a 32-bit project. I had downloaded the wrong version. When I got the right ones, ie x86 instead of x64, it worked.

like image 94
Richard Shepherd Avatar answered Sep 28 '22 04:09

Richard Shepherd