最容易的方法是使用
msys2
或者cygwin
这些,并不需要自己编译什么的
我的环境是win10+msys2
pacman -Syu
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-libevent
完成!!enjoy!!
其他注意事项1:
[warn] evsig_init_: socketpair: 应用程序没有调用 WSAStartup,或者 WSAStartup 失败
#ifdef WIN32
#include <winsock2.h> //这个放在windows.h前面
#endif
int main()
{
#ifdef WIN32
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
fprintf(stderr, "Failed to initialize Winsock\n");
return 1;
}
#endif
// 在这里添加你的libevent代码
#ifdef WIN32
WSACleanup();
#endif
return 0;
}
target_link_libraries(timer_example event Ws2_32)
#include <stdio.h>
#ifdef WIN32
#include <winsock2.h>
#endif
#include <windows.h>
#include <event2/event.h>
void event_cb(evutil_socket_t fd, short events, void *arg)
{
// 处理事件回调函数
printf("test\n");
}
int main(int argc, char *argv[]) {
#ifdef WIN32
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
fprintf(stderr, "Failed to initialize Winsock\n");
return 1;
}
#endif
struct event_base *base = event_base_new();
struct event *ev = event_new(base, -1, EV_TIMEOUT, event_cb, NULL);
struct timeval tv = {1, 0};
event_add(ev, &tv);
event_base_dispatch(base);
event_free(ev);
event_base_free(base);
#ifdef WIN32
WSACleanup();
#endif
return 0;
}