Help and Support

文書番号: 822334 - 最終更新日: 2007年4月19日 - リビジョン: 3.5

BUG: Windows Server 2003 または Windows XP でアプリケーションを実行すると、プロシージャ エントリ ポイントの FreeAddrInfoW を見つけることができません。

メモ Microsoft Visual C++ .NET 2002年と Microsoft Visual C++ .NET 2003年、Microsoft .NET Framework によって提供されるマネージ コード モデルとアンマネージ ネイティブ Windows コード モデルの両方をサポートします。 この資料の情報は、アンマネージ Visual C++ コードのみに適用されます。

目次

すべて展開する | すべて折りたたむ

現象

または、 FreeAddrInfo Windows ソケットの関数を使用する Microsoft Windows Server 2003 または Microsoft Windows XP を実行しているコンピューターに ATL::CSocketAddr のようなヘルパー クラスを使用する、Unicode 対応アプリケーションを実行すると、次のエラー メッセージが表示されます可能性があります。
ダイナミック リンク ライブラリ WS2_32.dll で、プロシージャ エントリ ポイントの FreeAddrInfoW が見つかりませんでした。

原因

ws2_32.dll ライブラリ FreeAddrInfoW 記号 Unicode バージョンの FreeAddrInfo 関数を使用するために必要をエクスポートしません。

解決方法

この問題を解決するには、次の手順に従います。
  1. Atlsocket.h ファイルを使用する任意のディレクトリにコピーします。 このファイルは、次のディレクトリにあります。
    Files\Microsoft の Visual Studio .NET のプログラミング 2003\Vc7\atlmfc\include
  2. ステップ 1.
    //Atlsocket.h
    #pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib, "mswsock.lib")
    //Start of Addition
    #if _WIN32_WINNT < 0x0502
      #define ADDRINFOT addrinfo
      #define GetAddrInfo getaddrinfo
      #define FreeAddrInfo freeaddrinfo
    #endif
    //End of Addition namespace ATL
  3. Microsoft Visual C++ を開始します。
  4. [ ツール ] メニューの [ オプション ] をクリックします。 [オプション ] ダイアログ ボックスの左側、ボックスで プロジェクト ] を展開し、[ VC++ ディレクトリ ] をクリックします。

    メモ Visual C++ Express Edition を使用している場合は、[ オプション ] ダイアログ ボックスの左側のペインで [ プロジェクトおよびソリューション ] を展開し、[ VC++ ディレクトリ ] をクリックします。
  5. ディレクトリを表示する 含めるファイル クリックします。 変更されたバージョンの Atlsocket.h ファイルが、リストの先頭に置かれている、ディレクトリを追加します。
  6. アプリケーションを再構築します。

状況

マイクロソフトでは、この不具合をこの資料の対象製品として記載されているマイクロソフト製品の不具合として認識しています。

詳細

この問題を再現する手順

  1. Microsoft Visual Studio .NET 2003年を開始します。
  2. [ ファイル ] メニューの [ 新規作成 ] をポイントし、[ プロジェクト ] をクリックします。
  3. [ Visual C++ プロジェクト [ プロジェクトの種類 。 次に、[ テンプレート ] ボックスの一覧の [ Win32 コンソール プロジェクト をクリックします。
  4. [] ボックスで サンプル の入力を [OK] をクリックします。
  5. Win32 アプリケーション ウィザード ] ダイアログ、 ATL アプリケーションの設定 ののサポートの追加 のチェック ボックス選択を [完了] をクリックします。
  6. Sample.cpp ファイルで [既存の既定コードを次のコードで置き換えます
    #include "stdafx.h"
    #include <atlsocket.h>
    
    void _tmain()
    {
    	CSocketAddr aSocketAddr;
    }
  7. ソリューション エクスプローラー] で、プロジェクト ノードを右クリックし、[ プロパティ ] をクリックします。
  8. プロジェクト プロパティ ページ ] ダイアログ、ボックス [全般] [ 構成プロパティ ] で左側のペインで。 、右側のペインで設定、 文字セット Unicode 文字セットを使用 するプロパティ。 [OK]
  9. ダイアログ ボックスで [ ビルド ] をクリックして ビルド ソリューション アプリケーションをビルドします。 あるコンパイル エラーやリンク エラーが発生しない、ビルド処理中にわかります可能性があります。
  10. [ デバッグ ] の [ デバッグなしの開始 ] をクリックします。 「現象」に記載されているエラー メッセージが表示されることあります。
Windows Server 2003 および Windows XP では、新しい Windows ソケットの関数は、Windows ソケット API に追加されます。 GetAddrInfo FreeAddrInfo はアドレスのインターネット プロトコル バージョン 6 (IPv6) とインターネット プロトコル Version 4 (IPv4) の両方に対処するを追加 2 つの新しい Windows ソケット関数です。 Active Template Library (ATL) 7. 1 CSocketAddr クラスでは、IPv6 のサポートをこれらの新しい Windows ソケット関数使用できます。 ほかの ATL および Microsoft Foundation クラス (MFC) クラスは IPv6 のサポートを提供するために CSocketAddr クラスも使用します。 たとえば、 CAsyncSocket クラスと、 CSMTPConnection クラスは、 CSocketAddr クラスを使用します。

メモ CAsyncSocket クラスは、MFC クラスです。 CSMTPConnection クラスは、ATL クラスです。

記載されている問題、「現象」でセクションが Windows Server 2003 または Windows XP を実行しているコンピューターで、 FreeAddrInfo Windows ソケットの関数を使用する Unicode 対応のアプリケーションで発生します。 ATL CSocketAddr クラスは、 FreeAddrInfo 関数を使用して、ため、同じ問題も ATL 7. 1 で発生します。 ATL 7. 1 と IPv6 のサポートを有効にするために、 CSocketAddr クラスを使用する MFC 7. 1 内の任意のクラスが、この動作を反映されます。 たとえば、 CAsyncSocket クラスと、 CSMTPConnection クラスは、 CSocketAddr クラスを使用します。

CAtlHttpClient CSoapSocketClientT などの ATL サーバー クラスは、 ZEvtSyncSocket クラスを使用し、同じエラーを表示します。 この現象は ZEvtSyncSocket 内部クラスは CSocketAddr クラスの実装で使用するために発生します。

メモ CAtlHttpClient クラスは、HTTP クライアント サポートを提供します。 CSoapSocketClientT クラスは、XML Web サービス クライアントのサポートを提供します。

関連情報

ATL に加えられた変更の詳細については、次のマイクロソフト開発者向けネットワーク (MSDN) Web サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/aa983525(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa983525(VS.71).aspx)
Windows ソケット API に追加された新しい Windows ソケットの関数の詳細についてには次 MSDN Web サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/ms740642.aspx (http://msdn2.microsoft.com/en-us/library/ms740642.aspx)

この資料は以下の製品について記述したものです。
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition?を以下の環境でお使いの場合
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Home Edition
キーワード:?
kbmt kbwinsock kbapi kbappdev kbbug KB822334 KbMtja
機械翻訳機械翻訳
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:822334? (http://support.microsoft.com/kb/822334/en-us/ )
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

サポート技術情報の翻訳

 

Related Support Centers