标签: libevent

使用libevent回调成员函数

我试图将一个成员函数传递给libevent,它应被视为回调.

#include <event.h>

class A
{
    public:
        void eventcb(evutil_socket_t fd, short events, void *ctx) { }
};


static void global_eventcb(evutil_socket_t fd, short events, void *ctx) { }

typedef void (A::*mthd)(evutil_socket_t, short, void*);

int main(void)
{
    struct event_base *evbase = event_base_new();

    mthd eventcb = &A::eventcb;
    A *instance = new A;
    (instance->*eventcb)(NULL, 0, NULL);

    struct event *timer1 = evtimer_new(evbase, global_eventcb, NULL);
    struct event *timer2 = evtimer_new(evbase, (instance->*eventcb), NULL);

    return 0;
}   
Run Code Online (Sandbox Code Playgroud)

我可以在A类中成功创建一个指向eventcb的方法指针,在A的实例上调用它(第20行).

此外,在第22行传递全局函数(如在C中一样)也可以正常工作.

但是,在第23行,我尝试将我的方法指针传递给libevent,当我编译它时,我得到以下错误(使用 …

c++ member-function-pointers libevent

2
推荐指数
1
解决办法
4629
查看次数

你如何安装Libevent for PHP?

libevent-dev在Debian 7 64bit桌面上安装了这个库:

$ sudo aptitude install -y libevent-dev
Run Code Online (Sandbox Code Playgroud)

然后我安装了PECL库

$ pecl list
Installed packages, channel pecl.php.net:
=========================================
Package  Version State
libevent 0.1.0   beta
Run Code Online (Sandbox Code Playgroud)

我已经重新启动了PHP和操作系统,但PHP没有将libevent列为已安装的ext,phpinfo()并且"PHP Fatal error: Call to undefined function event_base_new()"当我尝试使用它时我得到了.

你如何安装Libevent?

php debian libevent

2
推荐指数
1
解决办法
5798
查看次数

加载共享库时出错:libevent-2.0.so.5

将ubuntu 16升级到18后,执行tmux时出现此错误

tmux:加载共享库时出错:libevent-2.0.so.5:无法打开共享库文件:没有这样的文件或目录

这是我执行时的结果 ldd $(which tmux)

linux-vdso.so.1 (0x00007ffd9878a000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f5588dfc000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f5588bd2000)
libevent-2.0.so.5 => not found
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f55889b7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f55885c6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5588fff000
Run Code Online (Sandbox Code Playgroud)

linux ubuntu libevent tmux

2
推荐指数
1
解决办法
3726
查看次数

如何在Windows上编译libevent2?

我试图将这个libevent2包编译到Windows,但目前我不能,因为configure脚本是一个shell脚本(/ bin/sh;不能在Windows中运行).

有什么方法可以编译它或获得预编译的包吗?我目前安装了MinGW,CMake和MS C++.

编辑:我已经设法使用nmake Makefile.nmake编译libevent2 但它没有生成任何Windows二进制文件/库.只有.lib.

makefile如下 -

# WATCH OUT!  This makefile is a work in progress.  It is probably missing
# tons of important things.  DO NOT RELY ON IT TO BUILD A GOOD LIBEVENT.

# Needed for correctness
CFLAGS=/IWIN32-Code /Iinclude /Icompat /DWIN32 /DHAVE_CONFIG_H /I.

# For optimization and warnings
CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo

# XXXX have a debug mode

LIBFLAGS=/nologo

CORE_OBJS=event.obj buffer.obj bufferevent.obj bufferevent_sock.obj \
    bufferevent_pair.obj listener.obj evmap.obj log.obj evutil.obj …
Run Code Online (Sandbox Code Playgroud)

c c++ windows cmake libevent

1
推荐指数
1
解决办法
2786
查看次数

hiredis“未定义的引用”编译器错误

我想在C中编译客户端以进行Redis。我已经下载并安装了libevent库和hiredis文件。我使用了以下命令:

gcc -I/home/tasos/Dropbox/lists/hiredis example-libevent.c -levent
Run Code Online (Sandbox Code Playgroud)

但我得到这些错误:

/tmp/ccxoerYJ.o: In function `redisLibeventReadEvent':
example-libevent.c:(.text+0x28): undefined reference to `redisAsyncHandleRead'
/tmp/ccxoerYJ.o: In function `redisLibeventWriteEvent':
example-libevent.c:(.text+0x56): undefined reference to `redisAsyncHandleWrite'
/tmp/ccxoerYJ.o: In function `getCallback':
example-libevent.c:(.text+0x2d2): undefined reference to `redisAsyncDisconnect'
/tmp/ccxoerYJ.o: In function `main':
example-libevent.c:(.text+0x393): undefined reference to `redisAsyncConnect'
example-libevent.c:(.text+0x3f3): undefined reference to `redisAsyncSetConnectCallback'
example-libevent.c:(.text+0x404): undefined reference to `redisAsyncSetDisconnectCallback'
example-libevent.c:(.text+0x45d): undefined reference to `redisAsyncCommand'
example-libevent.c:(.text+0x47d): undefined reference to `redisAsyncCommand'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

c compiler-construction linker libevent hiredis

1
推荐指数
1
解决办法
2834
查看次数

使用libev的异步HttpClient

我正在使用libebb(http://tinyclouds.org/libebb/)和libev编写一个Web服务器.我正在寻找一个使用libev事件循环的异步httpclient.

我希望它支持Http 1.1(流水线,保持活动等).

我希望这不是一个愚蠢的问题.

httpclient libevent libev

0
推荐指数
1
解决办法
2309
查看次数