使用 boost::asio/windows7/visual studio 2010 的编译器错误
Compiler errors using boost::asio/windows7/visual studio 2010
我一直在努力,因为我试图在我的系统上编译一个boost::asio程序(win7,vs2010,boost 1.49)。Boost 已正确构建并链接到我的 vs 项目。我用 boost::regex 进行了测试运行,一切正常。
编译器抱怨有 2 个标头(in6addr.h、ws2ipdef.h),大约 90% 是 C2146(语法)和 C2079(未定义的类/struc/联合名称)错误。
这些错误中的大量与未定义的窗口类型定义(USHORT,ULONG...)和winsock定义(SOCKET_ADDRESS,ADDRESS_FAMILY)有关。可以在本文末尾找到一个示例。
我的包括以下内容:
#pragma once
#include "targetver.h"
#include <boost/asio.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/cstdint.hpp>
#include <boost/bind.hpp>
#include <boost/enable_shared_from_this.hpp>
#include <stdio.h>
#include <tchar.h>
#include <string>
#include <cassert>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <map>
#include <sstream>
我逐个文件都尝试了包含定义并收集了这些定义在预编译标头中。
鉴于我的问题似乎与 winsock2 和窗口有关定义,我试图以所有可能的方式包含它们适当定义 (WIN32_LEAN_AND_MEAN..) 声明命令无济于事。
我尝试在独立程序中运行winsock2,一切运行正常。
我的问题似乎与此非常相似(尝试了所有建议/问题未解决):
http://www.developpez.net/forums/d585193/c-cpp/cpp/bibliotheques/boost/asio-erreur-syntaxe-specificateur-type-manquant-d/
我已经打破了 2 个键盘,并认真考虑用鼠标剩下的东西上吊。请帮忙!
提前感谢您的时间。
托马斯
错误示例:
ws2ipdef.h
Erreur 171 error C2059: erreur de syntaxe : ')' c:\program files (x86)\Microsoft SDKS\Windows\v7.0a\include\ws2ipdef.h 336 1 asioProto Erreur 180 error C2059: erreur de syntaxe : ')' c:\program files (x86)\Microsoft SDKS\Windows\v7.0a\include\ws2ipdef.h 354 1 asioProto Erreur 189 error C2059: erreur de syntaxe : ')' c:\program files (x86)\Microsoft SDKS\Windows\v7.0a\include\ws2ipdef.h 372 1 asioProto Erreur 198 error C2059: erreur de syntaxe : ')' c:\program files (x86)\Microsoft SDKS\Windows\v7.0a\include\ws2ipdef.h 390 1 asioProto Erreur 18 错误 C2079: 'sockaddr_gen::Address' utilise une struct de 'Sockaddr' non défini C:\Program Files (x86)\Microsoft SDKS\Windows\v7.0a\include\ws2ipdef.h 75 1 asioProto Erreur 19 error C2079: 'sockaddr_gen::AddressIn' utilise une struct de 'sockaddr_in' non défini c:\program files (x86)\Microsoft SDKS\Windows\v7.0a\include\ws2ipdef.h 76 1 asioProto Erreur 177 error C2086: 'int Boolean' : redéfinition c:\program files (x86)\Microsoft SDK\Windows\v7.0a\include\ws2ipdef.h 354 1 asioProto Erreur 186 error C2086: 'int Boolean' : redéfinition c:\program files (x86)\Microsoft SDK\Windows\v7.0a\include\ws2ipdef.h 372 1 asioProto
in6addr.h
Erreur 7 error C2143: erreur de syntaxe : absence de ';' avant '*' c:\Program Files (x86)\Microsoft SDKS\Windows\v7.0a\include\in6addr.h 27 1 asioProto Erreur 1 error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'Byte' c:\program files (x86)\microsoft SDKS\Windows\v7.0a\include\in6addr.h 24 1 asioProto Erreur 4 error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'Word' c:\program files (x86)\microsoft SDKS\Windows\v7.0a\include\in6addr.h 25 1 asioProto Erreur 2 error C4430: spécificateur de type manquant - int est pris en compte par 德福特。Remarque : C++ ne prend pas en charge int par Défaut C:\Program Files (x86)\Microsoft SDKS\Windows\v7.0a\include\in6addr.h 24 1 asioProto Erreur 3 error C4430: spécificateur de type manquant - int est pris en compte par 德福特。Remarque : C++ ne prend pas en charge int par Défaut C:\Program Files (x86)\Microsoft SDKS\Windows\v7.0a\include\in6addr.h 24 1 asioProto Erreur 5 error C4430: spécificateur de type manquant - int est pris en compte par 德福特。Remarque : C++ ne prend pas en charge int par Défaut C:\Program Files (x86)\Microsoft SDK\Windows\v7.0a\include\in6addr.h 25 1 asioProto
终于成功了。有点。
用于编译的 VS 工具集(VS2010 上默认为 v100)存在问题。切换后执行 v90 或 SDK 7.1,编译正常。
不知道为什么。
常规>平台工具集>项目属性
C++原生多目标
- 区分 VC++ 2010 和更高版本的编译器版本
- 使用 mkoctfile 与 Octave 和 Visual Studio 2010 编译器编译 .mex 或 .oct
- __declspec(dllimport)导致MSVC 2010上的编译器崩溃
- 为什么Visual Studio 2010编译器不知道__func_
- vc++2010/2012:std::包含unique_ptr编译器错误的结构的向量
- 我在这个c ++程序中遇到断点错误,看看.编译器Visual C++ 2010
- MSVS 2010 C++编译器和堆栈对齐问题
- VC++编译器升级2010->2015重新定义; 'constexpr'说明符不匹配
- 奇怪的"random"内部编译器错误在C++生成器 2010
- 类崩溃编译器中的 MSVC 2010 模板化映射
- 使用 boost::asio/windows7/visual studio 2010 的编译器错误
- C++ Visual Studio 2010 C4717 编译器警告在代码的一部分,但不在另一部分
- VS 2010 中返回值的编译器优化
- 编译器(Visual Studio 2010和GCC)之间的浮点不匹配
- 为什么vsc++2010编译器会为类似的函数生成不同的汇编代码
- 这是一个VC++2010编译器错误吗?
- 这是Visual Studio 2010中的编译器错误吗
- 用于MSVC++2010编译器的调试器
- Visual Studio 2010 c++编译器为类分配错误的大小
- 如何使用Visual Studio 2010与Visual c++ 2008编译器