开源库evhtp在windows下编译
2021-05-17 02:30
标签:代码 list package man 重定义 安装 目录 依赖 config文件 工作需要搭建基于C++的http服务,最后选择使用evhtp。在linux下的编译参考readme即可。现在重点来说下windows下的编译过程。 代码git地址:https://github.com/criticalstack/libevhtp 说明:图中需要编译的库都会在源代码里面提供,必须具备 1 和 3 按照原作者说明,采用cmake + “MSYS Makefiles“ 来进行编译,这种方式我尝试过,没有成功。最终采用”Visual Studio“的方式来编译。 打开代码根目录(包含CMakeLists.txt文件),创建build目录 修改后的config.h开头定义如下,重新定义一个是否导出的宏 EVHTP_NEED_EXPORT,将这宏放到预处理定义里,并删除原来的 EVHTP_EXPORT宏。重新编译后,包含evhtp.lib及evhtp.dll文件 新建一个工程,利用evhtp库创建一个http服务器,看是否成功。代码如下: 编译后,运行程序。提示 无法定位程序点输入点 evhtp_use_threads_wexit 。查找该函数定义在evhtp.c文件中,不过该函数是否编译由 EVHTP_DISABLE_EVTHR 宏来控制,在上面步骤5里面,我们将这个编译选型设置为ON,所以导致头文件中由接口定义,但是却没有实现。 修改build/include目录下的config文件中将 #define EVHTP_DISABLE_EVTHR代码注释掉,注意可能存在多行。重新编译我们的evhtp库,会提示找不到pthread.h找不到,将VS中NuGet找到pthread的库安装即可。 如果提示timespec重定义错误,在预处理宏中加上 HAVE_STRUCT_TIMESPEC 定义 编译成功运行工程,通过web页面发送请求,成功。通过ProcessExplorer工具查看,程序也是有17个线程。遇到过没编译好,只有一个线程情况。 附上我编译后的源代码地址:https://github.com/kswangxing/evhtp_win 里面包含编译后代码。 编译环境:VS2019 64位 开源库evhtp在windows下编译 标签:代码 list package man 重定义 安装 目录 依赖 config文件 原文地址:https://www.cnblogs.com/kswangxing/p/11787478.html编译准备
编译过程
#ifndef EVHTP_NEED_EXPORT
# if (defined __GNUC__ && __GNUC__ >= 4) || defined __INTEL_COMPILER || defined __clang__
# define EVHTP_EXPORT __attribute__ ((visibility("default")))
# else
# define EVHTP_EXPORT __declspec(dllimport)
# endif
#else
# if (defined __GNUC__ && __GNUC__ >= 4) || defined __INTEL_COMPILER || defined __clang__
# define EVHTP_EXPORT
# else
# define EVHTP_EXPORT __declspec(dllexport)
# endif
#endif
结果测试
1 // main.cpp: 主程序入口
2 //
3 #include
总结
文章标题:开源库evhtp在windows下编译
文章链接:http://soscw.com/index.php/essay/86523.html