0

私のシステムでboost::asioプログラムをコンパイルしようとして数時間苦労しています(win7、vs2010、boost 1.49)。Boostは適切に構築され、私のvsプロジェクトにリンクされています。boost :: regexを使用してテストを実行しましたが、すべて問題なく動作しました。

コンパイラは2つのヘッダー(in6addr.h、ws2ipdef.h)について文句を言い、約90%がC2146(構文)およびC2079(未定義のクラス/構造/ユニオン名)エラーです。

これらのエラーの多くは、Windowsタイプ定義(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とwindowsの定義に関連しているように思われるので、適切な定義(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エラーC2059:erreur de Syntaxe:')' c:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 336 1 asioProto Erreur 180エラーC2059:erreur de Syntaxe:')' c:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 354 1 asioProto Erreur 189エラーC2059:erreur de Syntaxe:')' c:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 372 1 asioProto Erreur 198エラー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' available une struct de'sockaddr'nondéfinic:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 75 1 asioProto Erreur 19エラーC2079: 'sockaddr_gen :: AddressIn'utilize une struct de'sockaddr_in'nondéfinic:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 76 1 asioProto Erreur 177 error C2086:' int BOOLEAN': redéfinitionc:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 354 1 asioProto Erreur 186エラーC2086:'int BOOLEAN':redéfinitionc:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 372 1 asioProtoh 354 1 asioProto Erreur 186エラーC2086:'int BOOLEAN':redéfinitionc:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 372 1 asioProtoh 354 1 asioProto Erreur 186エラーC2086:'int BOOLEAN':redéfinitionc:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ ws2ipdef.h 372 1 asioProto

in6addr.h

Erreur 7エラーC2143:erreur de構文:absence de';' avant'*' c:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ in6addr.h 27 1 asioProto Erreur 1エラーC2146:erreur de構文:absence de';' avant l'identificateur' Byte'c:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ in6addr.h 24 1 asioProto Erreur 4エラー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écificateurdetype manquant --int est prisencomptepardéfaut 。Remarque:C ++ ne prend pas en Charge intpardéfautc:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include\in6addr。h 24 1 asioProto Erreur 3エラーC4430:spécificateurdetypemanquant-int est prisencomptepardéfaut。Remarque:C ++ ne prend pas en Charge intpardéfautc:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ in6addr.h 24 1 asioProto Erreur 5 error C4430:spécificateurdetype manquant --int est pris encomptepardéfaut。Remarque:C ++ ne prend pas en Charge intpardéfautc:\ program files(x86)\ microsoft sdks \ windows \ v7.0a \ include \ in6addr.h 25 1 asioProto

4

1 に答える 1

0

ついにそれを釘付けにすることができました。すこし。

問題は、コンパイルに使用される VS ツールセット (VS2010 ではデフォルトで v100) にありました。v90 または SDK 7.1 に切り替えると、正常にコンパイルされます。

理由はわかりませんが。

プロジェクト プロパティ > 一般 > プラットフォーム ツールセット

C++ ネイティブ マルチターゲット

于 2012-04-11T19:54:24.497 に答える