我在新应用程序中尝试使用 ZeroMQ 时遇到问题。请注意:我自己下载和构建 ZeroMQ 没有问题。我下载了 ZeroMQ ZIP 文件,在 Visual Studio/C++ 2008 中打开了项目/解决方案文件,并很好地构建了 ZeroMQ 库。ZeroMQ 安装文件夹的 /lib 目录包含 .lib、.dll 和其他文件,所以据我所知,一切都很好。
我的问题是我正在尝试构建一个简单的项目,其中包含 ZeroMQ 用户指南中的 HelloWorld 服务器示例。我创建了以下名为 helloserver.c 的文件。
//
// Hello World server
// Binds REP socket to tcp://*:5555
// Expects "Hello" from client, replies with "World"
//
#include <zmq.h>
#include <stdio.h>
#include <string.h>
int main (void)
{
zmq_msg_t request;
zmq_msg_t reply;
void *context = zmq_init (1);
// Socket to talk to clients
void *responder = zmq_socket (context, ZMQ_REP);
zmq_bind (responder, "tcp://*:5555");
while (1) {
// Wait for next request from client
zmq_msg_init (&request);
zmq_recvmsg (responder, &request, 0);
printf ("Received Hello\n");
zmq_msg_close (&request);
// Do some 'work'
Sleep (1);
// Send reply back to client
zmq_msg_init_size (&reply, 5);
memcpy (zmq_msg_data (&reply), "World", 5);
zmq_sendmsg (responder, &reply, 0);
zmq_msg_close (&reply);
}
// We never get here but if we did, this would be how we end
zmq_close (responder);
zmq_term (context);
return 0;
}
我将 ZeroMQ 安装包含目录添加到 VC++2008 包含路径(Properties->Configuration Properties->C/C++->General->Additional Include Directories),我还将 ZeroMQ lib 目录添加到项目中:(Properties- >配置属性->C/C++->代码生成->运行时库,选择多线程调试DLL /MDd)。
我试图建立这个项目。一切都编译得很好,但是在链接时我得到了一堆像这样的未解决的外部:
1>链接... 1>helloserver.obj:错误LNK2019:未解析的外部符号_imp _zmq_term在函数_main 1>helloserver.obj中引用:错误LNK2019:未解析的外部符号_imp_zmq_close在函数_main 1>helloserver.obj中引用:错误 LNK2019:未解析的外部符号_imp _zmq_sendmsg在函数 _main 1>helloserver.obj 中引用:错误 LNK2019:未解析的外部符号_imp _zmq_msg_data在函数 _main 1>helloserver.obj 中引用:错误 LNK2019:未解析的外部符号_imp _zmq_msg_init_size在函数中引用_main 1>helloserver.obj:错误 LNK2019:无法解析的外部符号 _imp_zmq_msg_close 在函数 _main 1>helloserver.obj 中引用:错误 LNK2019:未解析的外部符号_imp _zmq_recvmsg在函数 _main 1>helloserver.obj 中引用:错误 LNK2019:未解析的外部符号_imp _zmq_msg_init在函数 _main 1>helloserver.obj 中引用:错误LNK2019:未解析的外部符号_imp _zmq_bind在函数_main 1>helloserver.obj 中引用:错误LNK2019:未解析的外部符号_imp _zmq_socket在函数_main 1>helloserver.obj 中引用:错误LNK2019:未解析的外部符号_imp _zmq_init在函数_main 中引用1>C:\work\visualc++2008\projects\HelloZMQServer\Debug\HelloZMQServer.exe : 致命错误 LNK1120: 11 unresolved externals
我尝试返回代码生成-> 运行时库设置并尝试将库开关更改为 ?MD 或 /MT 但没有任何效果,我仍然收到这些链接器错误。
请注意,当我创建 helloworld.c 时,我使用了一个空的 Windows 控制台应用程序项目,并且我所做的唯一更改是添加了 ZeroMQ 包含和 lib 目录,如上所示。我没有更改任何其他默认项目设置。我猜我在某处缺少项目设置。
我怎样才能解决这个问题?