1.编译选项-MT/MD:
类别 |
说明 |
静态连接 |
多线程(/MT) |
多线程Release、DLL版运行时库 ,只能用于Release版本 |
LIBCMT.lib |
多线程调试(/MTd) |
多线程Debug、DLL版运行时库 ,只能用于Debug版本 |
LIBCMTD.lib |
多线程调试DLL(/MD) |
多线程Release、静态版运行时库 ,只能用于Release版本 |
MSVCRT.lib |
多线程调试DLL(/MDd) |
多线程Debug、静态版本运行时库 ,只能用于Debug版本 |
MSVCRTD.lib |
2.Window下动态连接和静态连接:
类别 |
后缀 |
说明 |
动态链接库 |
DLL |
包含若干个函数的库文件 |
静态链接库 |
静态lib |
包含函数代码声明和实现,编译后所有代码都嵌入到宿主程序中。 |
动态lib |
相当于.h头文件,是对实现部分(.DLL)的导出部分的声明 |
3.libevent编译流程(使用vs2019):
步骤1:下载源码:http://libevent.org/,选择libevent-2.01.10-stable2.1.10版本,并解压
步骤2:打开x86 Native Tools Command Prompt for VS 2019,并切换到libevent-2.01.10-stable目录下
步骤3:运行nmake /f Makefile.nmake,编译结束,将libevent-2.01.10-stable目录下产生3个lib文件
步骤4:
1.项目下新建Lib目录,将三个lib文件copy到该目录下。
2.项目下新建Include目录,将libevent-2.01.10-stable\include下的文件和文件夹copy到该目录下,libevent-2.0.21-stable\WIN32-Code下的文件copy到该目录下,2个event2目录下的文件可合并一起
步骤5:VS开发环境设置
项目属性设置:
1.VC++目录:
包含目录,添加:F:\Projects\LibeventTest\LibeventTest\Include;
库目录,添加:F:\Projects\LibeventTest\LibeventTest\Lib;
2.C/C++:
代码生成–>运行库:多线程调试 (/MTd)(Debug下),多线程 (/MT)(Release下)
3.连接器:
输入:ws2_32.lib;wsock32.lib;libevent.lib;libevent_core.lib;libevent_extras.lib;
ws2_32.lib;wsock32.lib;编译Windows网络相关程序库。
注意事项:
- libevent默认编译是release版本x86库
- 如果需要编译debug版本的,修改一下makefile.nmake:
#CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo
修改为:
#CFLAGS=$(CFLAGS) /D_DEBUG /Od /W3 /wd4996 /nologo - 如果编译成64位,添加一个LIBFLAGS选项 /MACHINE:X64,编译终端变为x64 Native Tools Command Prompt for VS 2019
参考:
编程 MD(d)、MT(d)编译选项的区别 – Pkj – 博客园