【C工具】【libevent】一、win+msys2环境下的安装

最容易的方法是使用msys2或者cygwin这些,并不需要自己编译什么的
我的环境是win10+msys2

  • 包管理器更新
pacman -Syu
  • gcc工具链安装
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
  • libevent安装
pacman -S mingw-w64-x86_64-libevent
  • 完成!!enjoy!!

  • 其他注意事项1:

    • 如果使用windows.h或许要如下添加代码(测试不使用则没有该错误),否则可能会有这个错误:[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;
}
  • 其他注意事项2:
    • 编译的时候注意添加这两个库,cmake的示例:
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;
}
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值