这可能是一个 Visual Studio 问题,最重要的是......
我正在尝试使用 VS10 和 ZeroMQ 2.2.0构建一个 0MQ C++ 示例。
我下载了Windows 源代码并尝试按照这些说明静态构建 0MQ。具体来说:
- 切换到发布
- 对于解决方案中的所有 7 个项目:
- 设置
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 似乎构建良好。
- 创建了一个空的控制台项目:
- 切换到发布
- 使用上面链接的示例添加了一个 cpp 文件
- 更改
random
为rand
,srandom
tosrand
和snprintf
to_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
我错过了什么?