日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows编译libevent时报告“缺少print_winsock_errors.obj”的解决

發布時間:2023/12/9 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows编译libevent时报告“缺少print_winsock_errors.obj”的解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、綜述

Libevent 是一個用C語言編寫的、輕量級的開源高性能事件通知庫。

在libevent官網(http://libevent.org)下載源碼包,在Windows平臺編譯時,會報缺少“print_winsock_errors.obj”的錯誤。

?

二、原因及解決

經檢查,這是因為源碼包中缺少文件test/print_winsock_errors.c導致,原因未知。

解決方法:手工生成test/print_winsock_errors.c,以下為從git搜索到的代碼內容:

#include <winsock2.h> #include <windows.h>#include <stdlib.h> #include <stdio.h>#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_IMPLEMENTEDevthread_use_windows_threads (); #endifs1 = 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

總結

以上是生活随笔為你收集整理的windows编译libevent时报告“缺少print_winsock_errors.obj”的解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。