使用libevent
1:获取libevent库。
从libevent 官网中获取,这里获取到的版本是libevent-2.1.12-stable.tar
2:windows上编译libevent库(VS2019上使用)
2.1:cmake准备
注:这里要用cmake进行编译,除此之外还需要用到cl连接器。
我在自己安装cmake后用安装后的cmake进行编译时发现有找不到cl指令的问题,
这里直接用vs2019ide下的cmake直接进行编译没有出现问题。
2.2:进行编译
解压压缩包后,在libevent-2.1.12-stable目录下新建build目录
如果直接在build目录下用cmake … 进行编译,会发现有openssl模块的报错
关闭依赖openssl模块,用如下指令进行编译。
D:\software\VS_2019\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake .. -DEVENT__DISABLE_OPENSSL=ON -DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_DEBUG_MODE=ON
2.3:build目录下生成了libevent.sln文件
用vs2019打开该项目文件,可以看到,已经正常加载项目,以及有多个模块的测试demo
选择其中一个,这里用time-test作为启动项,进行运行测试,测试成功。
2.4:生成lib库并被其他项目调用
生成对应的debug和release相关库。
指令如下,还是在当前build目录下
D:\software\VS_2019\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake .. --build . --config Debug
D:\software\VS_2019\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake .. --build . --config Release
执行后,分别生成对用的debug和Release模块对应的相关lib库和一些测试demo的可执行文件。
对应的lib库参考 build目录下的lib目录,其他项目依赖需要连接该lib目录下的相关库。
对应的一些demo的可执行文件参考build目录下的bin目录,bin目录下可执行文件可执行。
3:供其他项目调用
3.1 准备需要的头文件和链接库
这里主要准备对应的头文件,和需要的链接库。
1:动态连接库可取 libevent-2.1.12-stable\build\lib目录下
2:头文件需要取 libevent-2.1.12-stable\include ,libevent-2.1.12-stable\compat, libevent-2.1.12-stable\WIN32-Code\nmake目录下的头文件,进行合并
3.2 创建项目进行测试
1:vs2019下新建一个项目,点击项目属性,配置头文件 (注意这里配置的debug,如果要测试Release类似)
2:配置lib
Release版本类似,同样需要配置。
C:\Users\yun68\Desktop\libevent\lib\Debug\event.lib
C:\Users\yun68\Desktop\libevent\lib\Debug\event_extra.lib
C:\Users\yun68\Desktop\libevent\lib\Debug\event_core.lib
ws2_32.lib
iphlpapi.lib
Advapi32.lib
注: Advapi32.lib这个lib库是在调试中发现有报错,解决问题新增的。
3:拷贝libevent库目录下的sample下的demo进行测试。
3.1 这里拷贝的是 time-test.c 文件内容,直接替换。
最终测试成功,但是遇到过两个问题:
1:需要增加宏 #define _CRT_SECURE_NO_WARNINGS (也可以参考在预编译头中增加对应宏解决)
2:编译的时候注意选择编译的版本相关。 如这种报错,这里应该选择x64
3.2 拷贝hello-world.c下的内容进行测试
用 telnet 127.0.0.1 9995指令进行测试,现象如下。
打算研究一些win上网络库的使用,简单先运行libevent的demo,然后研究看看源码,下一步。
参考:安装和使用libevent - 知乎 (zhihu.com)