这可能是一个Visual Studio问题,而不是其他任何问题。
我正在尝试使用VS10和ZeroMQ 2.2.0构建a 0MQ C++ example。
我下载了windows sources并尝试遵循these instructions以便静态构建0MQ。具体来说:
General\Configuration Type
设置为Static library (.lib)
C/C++\Code Generation\Runtime Library
设置为Multi-threaded (/MT)
ZMQ_STATIC
添加到C/C++\Preprocessor\Preprocessor Definitions
zmq.h
和zmq_utils.h
,以便如果定义了_MSC_VER
和ZMQ_STATIC
,那么DLL_EXPORT
也将被定义此时,0MQ似乎构建良好。
random
更改为rand
,将srandom
更改为srand
,将snprintf
更改为_snprintf
C/C++\Code Generation\Runtime Library
设置为Multi-threaded (/MT)
...\zeromq-2.2.0\include
文件夹添加到C/C++\General\Additional Include Directories
...\zeromq-2.2.0\builds\msvc\Release\*.lib
添加到Linker\Input\Additional Dependencies
但是,我仍然收到以下链接错误:
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
我错过了什么?
最佳答案
您也应该在“空控制台项目”中将ZMQ_STATIC
添加到C/C++\Preprocessor\Preprocessor Definitions
中。否则,当您编译应用程序时,ZMQ_EXPORT
中的zmq.h
被定义为__declspec(dllimport)
,因此,MSVC将寻找__imp__zmq_*
符号而不是zmq_*
关于visual-studio - 链接到VS中的静态0MQ库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10367678/