windows 上编译 libevent

来源:互联网 发布:淘宝最帅男模特顾义伟 编辑:程序博客网 时间:2024/05/19 04:54

libevent 官网下载最新的安装包  libevent-2.1.8-stable.tar.gz

解压


打开 vs2013  命令行环境

我的是这个

VS2013 x64 本机工具命令提示


切换到 前面解压的 libevent 目录

nmake Makefile.nmake


生成了3个lib :

libevent.lib

libevent_core.lib

libevent_extras.lib 


然后报错

NMAKE : fatal error U1073: 不知道如何生成“print-winsock-errors.obj”
Stop.
NMAKE : fatal error U1077: “I:\vs\VC\BIN\amd64\nmake.exe”: 返回代码“0x2”
Stop.


打开 Makefile.nmake 文件

是生成 libevent_openssl.lib  的时候遇到了问题

# OPENSSL_DIR=c:\openssl

SSL_OBJS=bufferevent_openssl.obj

我电脑上压根就没有 openssl 


于是官网下载 openssl : 最新的

openssl-1.1.0f.tar.gz


发现opensll安装得用perl

于是想从官网下载 , 官网打开太慢了,放弃~~

baidu那下了个

ActivePerl_5.16.2.3010812913.msi

双击开始安装


然后安装 openssl

perl Configure VC-WIN64A

网上说的  ms\do_win64a

我的ssl的 ms 下就没这个文件

我按照 ssl 根目录的install 说明

运行了

nmake

nmake test

这些都没有问题

nmake install

时似乎是装上了,但是报了一堆的错,我不知道是否最终安装成功了

类似下面的错误

Cannot find "ASN1_generate_nconf(3)" in podpath: cannot find suitable replacemen
t path, cannot resolve link


继续libevent的安装

libevent 目录,vc命令行

nmake Makefile.make

问题依然  print-winsock-errors.obj 找不到

ok 那就先不搞 ssl 的库吧


就用

libevent.lib

libevent_core.lib

libevent_extras.lib 

生成的这3个库吧

写了个简单的 mian.cc,里面就用了下time

link 失败  链接器一直找不到  libevnt相关的函数 

各种尝试后,放弃


最后我是这样做的。

打开makefile.nmake

参考里面的 目录包含 以及 .c 组织 

我用vs2013建了个控制台程序

把.c 一个个 托到工程里

ok ,问题解决


看就这3行

CORE_OBJS=event.obj buffer.obj bufferevent.obj bufferevent_sock.obj \
bufferevent_pair.obj listener.obj evmap.obj log.obj evutil.obj \
strlcpy.obj signal.obj bufferevent_filter.obj evthread.obj \
bufferevent_ratelim.obj evutil_rand.obj
WIN_OBJS=win32select.obj evthread_win32.obj buffer_iocp.obj \
event_iocp.obj bufferevent_async.obj
EXTRA_OBJS=event_tagging.obj http.obj evdns.obj evrpc.obj

对应的 .c 都搞到工程里即可


稍后我把工程文件上传


这里分享一个小技巧

如果有个别.c没加进工程

链接提示找不到

比如 _event_xxx 找不到 在 xxxx  里引用

Ctrl shift F 然后在libevent源码文件夹搜索关键字  event_xxx  (少了个下划线)

把那个找到的.c 加到工程里即可





原创粉丝点击