`
yesjavame
  • 浏览: 712529 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

VS2005编译libevent

阅读更多
libevent版本为libevent-1.4.5-stable。

WIN32-Prj目录下有VC项目文件。

libevent.sln不能用,因为只有regress有vcproj文件,其他子项目都是dsp文件。

而libevent.dsw不包括regress。

删除sln文件,直接打开dsw文件,自动转换除regress之外的4个工程为vcproj。

fatal error C1083: 无法打开包括文件:“sys/time.h”

#ifdef _EVENT_HAVE_SYS_TIME_H

#include <sys/time.h>

应该去除_EVENT_HAVE_SYS_TIME_H,不要包含sys/time.h。

_EVENT_HAVE_SYS_TIME_H 定义于 event-config.h,肯定会包含进来,

所以必须更改 event-config.h 文件。

为VS2005复制一份libevent,然后更改它。

config.h是由configure生成的。

make时根据 config.h 生成event-config.h,但有个缺省的event-config.h。

MSVC编译时不能生成config.h文件,而应该使WIN32-Code/config.h生效。

用MSVC编译WIN32-Code/win32.c时会包含该WIN32-Code/config.h。

event-config.h要手工改,memcached项目有针对libevent1.4.4的更改,可拿来用。

(libevent-1.4.4-stable-win32.zip,http://code.jellycan.com/memcached/,但下载一点就会断)

参考jellycan的libevent.diff,即对libevent1.4.4的更改。

参考spserver项目中的libevent-main-iocp-1也行。

用libevent-main-iocp-1\WIN32-Code\event-config.h代替event-config.h。

去除mics.c。libevent可编译成功。

但是几个test项目无法成功编译,应该是因为没有config.h的配置。

对于event_test项目:

__func__未定义。直接在项目宏定义中添加__func__=__FUNCTION__。

实际上该定义在WIN32-Code\config.h中有。

libevent.lib(event.obj) : error LNK2019: 无法解析的外部符号 _evutil_gettimeofday,该符号在函数 _gettime 中被引用

但是libevent.lib只有event.c,还缺许多函数。

在libevent项目中再添加buffer.c evbuffer.c evutil.c singal.c strlcpy.c,并重新生成。

(可参考configure生成的Makefile决定需要哪些文件。)

无法解析的外部符号 __imp__select@20,该符号在函数 _win32_dispatch 中被引用

添加ws2_32.lib

WinSocket未初始化,evutil_socketpair调用socket()失败。

在main()中event_init()之前添加WSAStartup()。

参见regress的main()。

现在event_test可以编译运行,但会立即退出。

原因是win32_dispatch()中的select()调用出错,WSAENOTSOCK (10038),

对非socket应用select()就会报这个错误。

(转载请注明来源于金庆的专栏)

分享到:
评论

相关推荐

    LibEvent2.0.1.7 在VS2005下编译通过

    在本案例中,我们关注的是 LibEvent 2.0.1.7 版本,它已经成功地在 Visual Studio 2005 (VS2005) 这个较旧的开发环境中编译通过。 首先,`LibEvent2017.sln` 文件是一个 Visual Studio 解决方案文件,它包含了构建 ...

    libevent-vs2017编译

    描述中提到"visual stdio 2017下libevent的源码编译,工程配置已经完备,支持一键编译,便于调试、深入源码分析",意味着这个压缩包包含了预配置好的VS2017项目文件,用户无需繁琐的设置步骤即可直接编译Libevent源...

    VS2015编译后的libevent头文件和库文件——基于libevent-2.1.10

    在本资源中,我们关注的是使用Visual Studio 2015(VS2015)编译的libevent,版本为2.1.10。这个版本包含了头文件和库文件,是将libevent集成到Windows平台上的VS项目中的基础。 首先,我们来理解一下`libevent`的...

    vs2013编译调试libevent

    vs2013编译调试libevent。因为想看下libevent内部的执行流程,所以做了一个2013的工程,这样可以直接debug跟踪到底层的代码。首先vs2013打开build文件夹下的libevent.sln,然后解决方案右键选择"重新生成解决方案...

    可调试(vs2012编译)libevent 2.1.8

    **可调试(vs2012编译)libevent 2.1.8** Libevent是一个开源的、跨平台的事件通知库,它被广泛应用于网络编程,如HTTP服务器、TCP和UDP服务等。这个版本是专为Windows环境设计,利用Visual Studio 2012(VS2012)...

    使用nmake或vs2008集成环境编译libevent-2.0.11-stable

    1.使用VS2008自带nmake编译libevent-2.0.11-stable (1)修改event_iocp.c、evthread_win32.c、listener.c三个文件,在文件开头分别加上一行: #define _WIN32_WINNT 0x0500 (2)打开Visual Studio 2008 命令提示 ...

    vs编译libevent 可调试

    接下来,我们要讨论如何在VS2008中编译libevent。首先,你需要下载libevent-2.0.22的源码包,解压到本地目录。然后,打开Visual Studio 2008,创建一个新的Win32控制台应用程序项目,选择“空项目”模板。在项目属性...

    libevent的2.0.21在VS2010下编译通过

    在VS2010中编译libevent 2.0.21,通常涉及以下步骤: - 配置项目设置:选择合适的编译器版本,设置预处理器宏、优化选项等。 - 解决依赖:libevent可能依赖于其他库(如OpenSSL),需要确保这些库也已正确配置。 ...

    VS2008静态编译libevent-2.1.8支持openssl

    压缩包里面有静态编译好的openssl1.0.2和libevent-2.1.8,以及libevent的源代码及编译方法,openssl的编译方法请看:https://mp.csdn.net/postedit/81085150

    libevent-2.0.22-stable在windows环境下使用mingw编译

    在Windows上编译libevent时,你需要先安装MinGW,确保包含了C++编译器和支持库。然后,配置编译环境,设置好PATH变量,以便编译器能找到所需的头文件和库。 **编译步骤** 1. **下载与解压**:首先,从官方或镜像...

    C++ vs2015 x64编译使用libevent 测试项目

    在本文中,我们将深入探讨如何在Visual Studio 2015环境下,针对x64架构编译并使用libevent库进行C++项目开发。libevent是一个开源、跨平台的库,用于处理网络事件和定时器,它允许程序员注册回调函数,以便在特定...

    LibEvent2017 VS2005编译通过

    《在VS2005下成功编译LibEvent2.0.1.7:C++网络编程的关键步骤》 LibEvent是一个广泛使用的开源库,它主要用于处理事件驱动的网络编程,尤其是在服务器端应用中。其核心功能是允许程序员定义一组事件,并在这些事件...

    vs2015直接编译libevent2.1.8-非命令行-可断点调试.

    vs2015可直接编译libevent静态库lib, 里面包含一个解决方案下三个项目libevent,libevent-core,libevent-extras,可以直接生成需要的lib文件,包含完整项目配置文件sln与vcxproj等等,直接打开就可以编译完成,方便...

    libevent 2.1.12版本,编译好的全部文件,包含lib和头文件

    总的来说,libevent 2.1.12版本是一个强大且可靠的事件库,它的全面文件包包含了预编译的库文件和头文件,方便开发者在自己的项目中快速集成和使用。无论是初学者还是经验丰富的开发者,都能从中受益,实现高效的...

    libevent(2.1.8)库及头文件文件

    描述中提到"libevent的win10(32),android(NDK10),linux(cenots7)",意味着这个库包含了针对三种不同平台的构建:Windows 10 32位系统、Android平台(通过NDK10编译)以及Linux的CentOS 7系统。值得注意的是...

    Libevent2.0.21编译好的库

    Libevent 是一个高度可移植、事件驱动的网络库,它被广泛用于编写高性能的服务器端和客户端应用。这个库提供了一种方式来处理各种输入/输出事件,如网络连接、定时器以及信号,使得开发者可以编写非阻塞的、反应灵敏...

    VS2003使用libevent库实现的httpd范例工程

    7. **编译配置** - 在VS2003中配置libevent库,包括添加包含目录、库目录和链接选项,确保程序能够正确编译和链接。 8. **测试与调试** - 如何使用"evtest"进行功能验证,通过调试工具理解libevent的工作流程,定位...

    libevent-2.1.12-stable openssl1.1.1f 在windows环境下使用mingw编译

    libevent-2.1.12-stable openssl1.1.1f 在windows环境下使用mingw编译 包含libevent 下的lib、include、bin和openssl的lib、include、bin 自己项目使用

    libevent2.0.3 VS2005整合包

    为了在VS2005环境下使用libevent,开发者通常需要手动调整编译设置和配置文件。这个整合包解决了这个问题,它提供了预编译的库和头文件,以及配置好的项目文件,可以直接在VS2005中使用,无需额外的编译步骤。 **三...

    libevent2.0.21_vs2005

    这里的 "vs2005" 暗示了这个版本的 Libevent 已经被适配为可以在 Visual Studio 2005 下编译和构建。 **描述分析:** 描述提到"包含 libevent2.0.21 .vcproj 文件",这意味着压缩包里有一个 Visual Studio 的项目...

Global site tag (gtag.js) - Google Analytics