博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows编译libevent时报告“缺少print_winsock_errors.obj”的解决
阅读量:5317 次
发布时间:2019-06-14

本文共 2376 字,大约阅读时间需要 7 分钟。

一、综述

Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库。

在(http://libevent.org)下载源码包,在Windows平台编译时,会报缺少“print_winsock_errors.obj”的错误。

 

二、原因及解决

经检查,这是因为源码包中缺少文件test/print_winsock_errors.c导致,原因未知。

解决方法:手工生成test/print_winsock_errors.c,以下为从git搜索到的代码内容:

#include 
#include
#include
#include
#include "event2/event.h"#include "event2/util.h"#include "event2/thread.h"#define E(x) printf (#x " -> \"%s\"\n", evutil_socket_error_to_string (x));int main (int argc, char **argv){ int i, j; const char *s1, *s2;#ifdef EVTHREAD_USE_WINDOWS_THREADS_IMPLEMENTED evthread_use_windows_threads ();#endif s1 = evutil_socket_error_to_string (WSAEINTR); for (i = 0; i < 3; i++) { printf ("\niteration %d:\n\n", i); E(WSAEINTR); E(WSAEACCES); E(WSAEFAULT); E(WSAEINVAL); E(WSAEMFILE); E(WSAEWOULDBLOCK); E(WSAEINPROGRESS); E(WSAEALREADY); E(WSAENOTSOCK); E(WSAEDESTADDRREQ); E(WSAEMSGSIZE); E(WSAEPROTOTYPE); E(WSAENOPROTOOPT); E(WSAEPROTONOSUPPORT); E(WSAESOCKTNOSUPPORT); E(WSAEOPNOTSUPP); E(WSAEPFNOSUPPORT); E(WSAEAFNOSUPPORT); E(WSAEADDRINUSE); E(WSAEADDRNOTAVAIL); E(WSAENETDOWN); E(WSAENETUNREACH); E(WSAENETRESET); E(WSAECONNABORTED); E(WSAECONNRESET); E(WSAENOBUFS); E(WSAEISCONN); E(WSAENOTCONN); E(WSAESHUTDOWN); E(WSAETIMEDOUT); E(WSAECONNREFUSED); E(WSAEHOSTDOWN); E(WSAEHOSTUNREACH); E(WSAEPROCLIM); E(WSASYSNOTREADY); E(WSAVERNOTSUPPORTED); E(WSANOTINITIALISED); E(WSAEDISCON); E(WSATYPE_NOT_FOUND); E(WSAHOST_NOT_FOUND); E(WSATRY_AGAIN); E(WSANO_RECOVERY); E(WSANO_DATA); E(0xdeadbeef); /* test the case where no message is available */ /* fill up the hash table a bit to make sure it grows properly */ for (j = 0; j < 50; j++) { int err; evutil_secure_rng_get_bytes(&err, sizeof(err)); evutil_socket_error_to_string(err); } } s2 = evutil_socket_error_to_string (WSAEINTR); if (s1 != s2) printf ("caching failed!\n"); libevent_global_shutdown (); return EXIT_SUCCESS;}

然后使用VS命令提示工具,在libevent解压目录下执行:nmake /f Makefile.nmake,编译顺利通过。

 

三、其它

经检查,在官网列出的1.4.x-stable, 2.0.x-stable, 2.1.x-stable等版本中貌似均存在此问题。

print_winsock_errors.c只有一段测试代码,没有也关系不大,因此另一种解决方法是:修改CmakeFileList,从中删除与print_winsock_errors有关的内容。

转载于:https://www.cnblogs.com/wggj/p/7472607.html

你可能感兴趣的文章
数字统计
查看>>
20180620小测
查看>>
聊聊setTimeout和setInterval线程
查看>>
归并排序(转)
查看>>
Python_Xlrd&Xlwt
查看>>
项目执行过程
查看>>
SCM基础之过程描述
查看>>
不喜欢写测试的朋友看过来,与你分享写测试的经验 做一个爱写测试的程序员...
查看>>
介绍一下Objective-c常用的函数,常数变量
查看>>
windows编译libevent时报告“缺少print_winsock_errors.obj”的解决
查看>>
.cue 文件格式
查看>>
【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
查看>>
点击User Profile Service Application 报错
查看>>
VS2010插件之NuGet
查看>>
1.单机部署hadoop测试环境
查看>>
[设计模式]桥接模式
查看>>
734. [网络流24题] 方格取数问题 二分图点权最大独立集/最小割/最大流
查看>>
关于input type=file 限制文件上传类型
查看>>
深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap[转]
查看>>
[转载]工作面试时最难的25个问题
查看>>