资讯动态

HP-Socket for Windows 编译指南:从 Visual Studio 工程到 MSBuild 命令行构建

发布时间:2026/10/15 3:12:17 来源:尧图企业网站定制
网络通信后端【免费下载链接】HP-SocketHigh Performance TCP/UDP/HTTP Communication Component项目地址https://gitcode.com/gh_mirrors/hp/HP-Socket点击查看免费下载HP-Socket 是高性能 TCP/UDP/HTTP 通信组件Windows 平台使用 IOCP 通信模型结合内存池与私有堆Private Heap技术实现高效内存管理以支撑大规模高并发通信场景。本文以 Windows/README.md 为核心骨架结合仓库工程文件系统讲解 HP-Socket 在 Windows 上的两种编译途径——Visual Studio IDE 与 MSBuild 命令行——以及产物命名、输出目录、清理与分发等实战细节。1. 快速上手两种编译方式1.1 方式一Visual Studio IDE仓库在Windows/Project目录下按 MSVC 版本提供多套解决方案HPSocketDLL-20XX生成 HP-Socket 动态链接库C 接口 DLLHPSocketDLL4C-20XX生成 HP-Socket 4C 动态链接库纯 C 接口 DLLHPSocketLIB-20XX生成 HP-Socket 静态链接库HPSocketLIB4C-20XX生成 HP-Socket 4C 静态链接库以 VS 2022 为例解决方案文件为 HPSocket-2022.sln。在 MSVC IDE 中打开对应年份的.sln文件选择目标平台Win32/x64与配置Debug/Release即可编译。每个工程默认提供 8 种配置组合。以 HPSocketDLL-2022/HPSocketDLL.vcxproj 为例可以看到配置字符集用途Debug / uDebugDebug调试带 PDBRelease / uReleaseRelease发布开启优化普通无 u 前缀MBCS多字节字符集u 前缀UnicodeUnicode 字符集1.2 方式二MSBuild 命令行快速编译在 MSVC 命令行提示符MSVC command prompt中运行Script/build-libs.bat [MSVC_VERSION]其中MSVC_VERSION默认值为2010。脚本支持传入年份来切换到对应版本的解决方案例如 VS 2022 环境运行Script/build-libs.bat 2022。查看 build-libs.bat 源码其核心逻辑是set version%1 if %version% set version2010 set prj_dir%~dp0..\Project for %%i in (Debug Release uDebug uRelease) do ( for %%j in (Win32 x64) do ( MSBuild -m:4 -t:Rebuild -p:Configuration%%i -p:Platform%%j %prj_dir%\HPSocket-%version%.sln ) ) call %~dp0copy.bat即依次对Debug、Release、uDebug、uRelease × Win32、x64共 8 种组合执行MSBuild -t:Rebuild并指定-m:4并行编译。编译完成后会调用 copy.bat将动态库拷贝到 Demo 的 Release 输出目录xcopy /y /s /f ..\Lib\HPSocket\x86\HPSocket_U.dll ..\Demo\Release\x86\ xcopy /y /s /f ..\Lib\HPSocket\x64\HPSocket_U.dll ..\Demo\Release\x64\ xcopy /y /s /f ..\Lib\HPSocket4C\x86\HPSocket4C_U.dll ..\Demo\Release\x86\ xcopy /y /s /f ..\Lib\HPSocket4C\x64\HPSocket4C_U.dll ..\Demo\Release\x64\可见默认 Demo 运行时使用的是Unicode ReleaseuRelease版本库。2. 库的四种形态与命名约定HPSocket 在 Windows 上提供 4 种库形态DLL / 静态 LIB × C 接口 / C 接口4C。动态库与静态库分别输出到不同目录动态在Lib\HPSocket\x86|x64\静态在Lib\HPSocket\x86|x64\static\且所有库都遵循统一的命名规则——普通配置无后缀、Debug 加_D、Unicode 加_U、Unicode Debug 加_UD配置字符集C 动态库C 静态库4C 动态库4C 静态库ReleaseMBCSHPSocket.dllHPSocket.libHPSocket4C.dllHPSocket4C.libReleaseUnicodeHPSocket_U.dllHPSocket_U.libHPSocket4C_U.dllHPSocket4C_U.libDebugMBCSHPSocket_D.dllHPSocket_D.libHPSocket4C_D.dllHPSocket4C_D.libDebugUnicodeHPSocket_UD.dllHPSocket_UD.libHPSocket4C_UD.dllHPSocket4C_UD.libx86 与 x64 位版本分别输出至x86/与x64/子目录上述命名规则同样适用于 4C 库。静态库输出在static/子目录中。3. 关键工程配置解析3.1 输出目录与目标文件名DLL 工程的输出目录定义为OutDir ..\..\Lib\HPSocket\x86\或x64静态库为..\..\Lib\HPSocket\x86\static\。IntDir统一为$(OutDir)obj\$(Configuration)\所有中间文件集中在输出目录下的obj\配置文件夹便于清理。4C 库输出至Lib\HPSocket4C\目录规则完全相同。3.2 平台工具集与语言标准以 2022 工程为例所有配置均使用PlatformToolset v143LanguageStandard stdcpp17C17LanguageStandard_C stdc17C17。2010/2015/2017/2019 目录对应各自 MSVC 版本工具集。3.3 预处理器定义与第三方依赖DLL 工程启用HPSOCKET_EXPORTS宏配合头文件中的__declspec(dllexport)导出符号见 HPTypeDef.h静态库使用则需定义HPSOCKET_STATIC_LIB。Release 配置还定义了_NOT_USE_PRIVATE_HEAP即发布版默认不启用私有堆。Windows 版本的构建依赖位于 Dependent 目录下的第三方库opensslSSL 组件zlib / brotliHTTP 压缩jemalloc / mimalloc内存分配器可选以及内置的 llhttpHTTP 解析、kcpUDP ARQDLL 工程的链接依赖包含brotli.lib; zlib.lib; libssl.lib; libcrypto.lib; crypt32.lib等说明 SSL 与 HTTP 压缩默认全部启用。3.4 运行库选择Debug 配置使用/MTdMultiThreadedDebugRelease 使用/MTMultiThreaded即静态运行时因此生成产物在目标机器上不依赖 VC 运行库动态包。4. 配套脚本清理与一键构建Windows/Script下提供完整脚本族build-libs.bat编译 4 个库工程上述 8 种配置build-demos.bat遍历Demo目录下所有.sln以 Release 配置逐个编译示例build-all.bat依次调用build-libs.bat与build-demos.bat一键完成全部构建clean.bat清理中间文件.ilk/.exp/.idb/.sdf/.suo/.VC.db等加/a参数额外删除.pdbclean-all.bat调用clean.bat /a深度清理编译示例也可通过 Demo 各自的.sln如 TestEcho.sln、TestEcho-ARQ.sln 等在 IDE 中打开构建。5. 常见问题与实用提示静态库使用宏使用静态库时必须在工程属性中定义HPSOCKET_STATIC_LIB否则符号解析会出错头文件注释与 HPTypeDef.h 均有明确说明。默认 MSVC 版本build-libs.bat不带参数时默认按 VS2010 工程编译使用新版 VS 时务必传年份参数。动态库部署Demo 默认引用Lib\HPSocket下的HPSocket_U.dllUnicode Release发布时注意携带对应_U版本并放置在与 exe 同目录。静态运行时库使用/MT静态链接运行库部署简单但若宿主程序使用/MD需注意运行库一致性要求。参考路径速查官方文档Windows/README.md、README.md库工程Windows/Project/HPSocketDLL-20XX/、HPSocketDLL4C-20XX/、HPSocketLIB-20XX/、HPSocketLIB4C-20XX/构建脚本Windows/Script/build-libs.bat、build-demos.bat、clean.bat头文件Windows/Include/HPSocket/HPSocket.h、HPSocket4C.h、HPTypeDef.h示例工程Windows/Demo/TestEcho/等Linux 版编译见 Linux/README.mdMacOS 版见 MacOS/README.md赞分享网络通信后端【免费下载链接】HP-SocketHigh Performance TCP/UDP/HTTP Communication Component项目地址https://gitcode.com/gh_mirrors/hp/HP-Socket点击查看免费下载相关推荐Fluent Bit 内置 zstd 的 Windows 命令行构建指南用 build.generic.cmd 与 Visual Studio 工具链无 IDE 编译Fluent Bit 内置 zstd 的 Windows 命令行构建指南用 build.generic.cmd 与 Visual Studio 工具链无 ID可观测性日志分析云原生流处理Zstandard 无 IDE 命令行构建指南用 VS_scripts 脚本编译 Visual Studio 版本Zstandard 无 IDE 命令行构建指南用 VS_scripts 脚本编译 Visual Studio 版本 本指南围绕 Zstandard 仓库 bu数据工程MSBuild与Visual Studio的协作揭秘IDE构建与命令行构建的差异终极指南MSBuild与Visual Studio的协作揭秘IDE构建与命令行构建的差异终极指南 在.NET开发世界中MSBuild作为微软的构建引擎与Visua构建工具开发工具CLI上一篇Cirq 版本管理与发布流程完全指南语义化版本、发布分支与 PyPI 交付实战下一篇幻兽帕鲁存档编辑完全指南从零开始掌握游戏数据可视化修改创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑