我在尝试在新应用程序中使用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 installatiion包含目录添加到VC ++ 2008包含路径(“属性”->“配置属性”->“ C / C ++”->“常规”->“附加包含目录”),并且还将ZeroMQ lib目录添加到了项目中:
(属性->配置属性-> C / C ++->代码生成->运行时库,选择多线程调试DLL / MDd)。
我试图建立该项目。一切都可以正常编译,但是链接时出现了很多这样的未解决的外部问题:
1>正在链接...
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_term
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_close
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_sendmsg
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_msg_data
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_msg_init_size
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_msg_close
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_recvmsg
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_msg_init
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_bind
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_socket
1> helloserver.obj:错误LNK2019:函数_main中引用的未解析的外部符号_imp_zmq_init
1> C:\ work \ visualc ++ 2008 \ projects \ HelloZMQServer \ Debug \ HelloZMQServer.exe:致命错误LNK1120:11无法解析的外部
我尝试返回到代码生成->运行时库设置,并尝试将库开关更改为?MD或/ MT,但无济于事,我仍然遇到这些链接器错误。
请注意,当我创建helloworld.c时,我使用了一个空的Windows控制台应用程序项目,而我所做的唯一更改就是添加了ZeroMQ include和lib目录,如上所述。我没有更改任何其他默认项目设置。我猜我在某处缺少项目设置。
我怎样才能解决这个问题?
最佳答案
您没有提到您还向项目添加了具体的库。请注意,仅告诉VS的lib路径是不够的,但是您还必须将lib本身添加到项目中。我现在没有Visual Studio,但是您可以在项目的链接器设置中找到此选项。在这里您可以提及所有要链接的库。