当前位置: 首页 > news >正文

fatal error C1189: #error: WinSock.h has already been included 的解决方案

目录

1.错误原因

2.解决方案


1.错误原因

boost::asio内部会引入WinSock2.h,而项目中先包含了Windows.h(或其他头文件间接包含了旧版WinSock.h),导致WinSock.hWinSock2.h两套套接字 API 头文件重复 / 冲突包含,编译器直接报错。

2.解决方案

1.全局添加预处理器宏(最快修复,CMake/Qt 通用)

在你的 CMakeLists.txt 中给目标添加定义,阻止Windows.h自动引入旧版WinSock.h

target_compile_definitions(ReviewControlPlugin PRIVATE _WINSOCKAPI_ # 阻止 Windows.h 自动包含 winsock.h WIN32_LEAN_AND_MEAN # 精简 Windows.h 包含内容,减少冲突概率 )

如果是 VS 项目,直接在「项目属性 → C/C++ → 预处理器 → 预处理器定义」中添加_WINSOCKAPI_;

2.调整头文件包含顺序

在所有.cpp/ 预编译头中,保证 boost/asio 相关头文件在 Windows.h 之前被包含

// 正确顺序:先包含 asio(内部引入 WinSock2.h) #include <boost/asio.hpp> // 再包含 Windows 头文件 #include <windows.h>

3.排查并替换旧头文件

检查项目代码中是否有直接#include <winsock.h>,全部替换为#include <winsock2.h>,两套头文件不能共存。

http://www.jsqmd.com/news/1164427/

相关文章:

  • 【一线大厂Java面试题合集】第06篇-Java注解机制详解
  • 技术栈彻底过时、架构范式变革与代码质量极低场景下的重构决策
  • PET/CT分割模型推理优化与工业级部署全流程实战
  • 信创产品测试全流程实战拆解:适配测试核心方法论与落地复盘
  • 终极演化动力学交易策略:全面推演
  • 免疫调控的“五重奏“ —— IFN-γ/IL-1β/IL-4/IL-6/IL-7R Panel助力免疫稳态的量化评估
  • 2026年企业品牌馆空间设计公司推荐 - 品牌排行榜
  • ClaudeCode工程化落地:/goal约束+claude.md规范+Git Worktree隔离
  • COMSOL 6.3安装避坑指南:JDK17、Intel MPI与OpenGL驱动硬性要求
  • STM32与TPA3138D2构建高效音频系统设计
  • 一、Kali的安装与环境搭建
  • PinMe一行命令部署原理:IPFS静态网站发布实战解析
  • Qwen Code:开源CLI编程代理如何重塑终端开发工作流
  • Unity中高效加载glTF模型:glTFast核心原理与性能优化实战
  • 【一线大厂Java面试题合集】第13篇-零拷贝技术详解
  • UE5任务图系统源码解析:TGraphTask与FGraphEvent核心机制与实战
  • 12864液晶(KS0108)与ST7920驱动对比:3大差异点与C代码移植指南
  • 告别选择困难!学习总结PPT工具实用横评:百度文库、ChatPPT、PPT百科深度体验
  • 人生如何才能源源不断的产生活下去的动力?
  • 2026年数字化企业展厅公司权威解读 - 品牌排行榜
  • Verilog 数字钟 FPGA 实现:12个模块化设计详解与 BASYS2 板卡调试
  • 从电子批记录到工业互联网:制药企业数字化工厂5年演进蓝图与3大价值指标
  • AD7490与MK24FN1M0VDC12构建高精度数据采集系统
  • AI音乐生成工具Suno实战:从零制作独立流行专辑完整指南
  • 5分钟搞定Android Studio中文界面:零基础汉化完整指南
  • 2026年论文降重技巧有哪些?10个高效方法从85%降到5%实战记录
  • 鲲鹏平台AI加速新选择:sra_onnxruntime_adapter完全解析
  • 豆包抖音内容创作新手入门指南
  • 单片机:一颗芯片包办CPU、内存、外设的“单芯片计算机”
  • SpringBoot 宝兰德中间件适配:3个常见依赖冲突与ClassNotFound问题排查