Makale numarası: 822334 - Son Gözden Geçirme: 19 Nisan 2007 Perşembe - Gözden geçirme: 3.5

Hata: yordam giriş noktası FreeAddrInfoW Windows XP veya Windows Server 2003'te bir uygulamayı çalıştırdığınızda bulun bağlantı, bir kısmı veya tamamı ingilizce olan içeriğe işaret edebilir.

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Not Microsoft Visual C++ .NET 2002 ve Visual C++ .NET 2003, Microsoft .NET Framework tarafından sağlanan bir yönetilen kod model hem de yerel Microsoft Windows kod modeli yönetilmeyen destekler. Bu makaledeki bilgiler yalnızca yönetilmeyen Visual C++ kod uygulanır.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Windows Sockets FreeAddrInfo işlevini kullanan veya Microsoft Windows Server 2003 veya Microsoft Windows XP çalıştıran bir bilgisayarda ATL::CSocketAddr gibi yardımcı sınıflar kullanan bir Unicode özellikli uygulaması çalıştırdığınızda, aşağıdaki hata iletisini alabilirsiniz:
Yordam giriş noktası FreeAddrInfoW WS2_32.dll dinamik bağlantı kitaplığında bulunamadı.

Neden

Ws2_32.dll kitaplığı FreeAddrInfo işlevi Unicode sürümünü kullanmak için gereken FreeAddrInfoW simge vermez.

Çözüm

Bu sorunu gidermek için aşağıdaki adımları izleyin:
  1. Atlsocket.h dosyayı kullanmak istediğiniz herhangi bir dizine kopyalayın. Bu dosya aşağıdaki dizinde bulunur:
    Files\Microsoft Visual Studio. NET'i program 2003\Vc7\atlmfc\include
  2. Adım 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++ başlatın.
  4. Araçlar menüsünden Seçenekler ' i tıklatın. <a0>Seçenekler</a0> iletişim kutusunun sol bölmesinde, Projeler genişletin ve VC ++ dizinler seçeneğini tıklatın.

    Not Visual C++ Express Edition kullanıyorsanız <a0>Seçenekler</a0> iletişim kutusunun sol bölmede Projeler ve çözümler'i genişletin ve VC ++ dizinler seçeneğini tıklatın.
  5. Dizinler için Göster altında Dosyaları Ekle'yi tıklatın. Sonra listenin en üstüne Atlsocket.h dosyanın değiştirilmiş sürümünü bulunduğu dizin ekleyin.
  6. Uygulama yeniden

Durum

Microsoft bu durumun, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi

Sorunu Yeniden Oluşturma Adımları

  1. Microsoft Visual Studio .NET 2003 başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. ' Yi tıklatın altında Project TypesVisual C++ Projects. Ardından, Win32 Konsolu'nu Projectşablonları altında'i tıklatın.
  4. Adı kutusuna, örnek yazın ve Tamam ' ı tıklatın.
  5. Win32 uygulama Sihirbazı iletişim kutusunda, ATL ve Uygulama ayarlarıİçin destek Ekle onay kutularını tıklatıp seçin ve sonra da <a2>son</a2>'u tıklatın.
  6. Sample.cpp dosyasında, varolan varsayılan kodu aşağıdaki kodla değiştirin.
    #include "stdafx.h"
    #include <atlsocket.h>
    
    void _tmain()
    {
    	CSocketAddr aSocketAddr;
    }
  7. Solution Explorer'da (Çözüm Gezgini), proje düğümünü sağ tıklatın ve sonra da Özellikler ' i tıklatın.
  8. Proje Özellik sayfaları iletişim kutusunda, GenelYapılandırma özellikleri sol bölmede tıklatın. Sağ bölmede, set karakter kümesi özelliğini Kullanın, Unicode karakter kümesi. Tıklatın Tamam.
  9. Yapı) menüsünde tıklatın Build Solution uygulama oluşturmak için. Oluşturma işlemi sırasında derleme hataları ya da bağlantı hataları ortaya görebilirsiniz.
  10. Hata Ayıkla) menüsünde, hata ayıklama olmadan Başlat ' ı tıklatın. "Belirtiler" bölümünde anlatılan hata iletisini aldığınız görebilirsiniz.
Yeni Windows Sockets işlevlerinde, Windows Server 2003 ve Windows XP, Windows yuva APı'SINE eklenir. GetAddrInfo ve FreeAddrInfo eklenmiş olan adresler ınternet Protokolü sürüm 6 (ıpv6) ve ınternet Protokolü sürüm 4 (ıpv4) ile ilgili iki yeni Windows Sockets işlevlerinde ' dir. Active Template Library (ATL) 7.1 CSocketAddr sınıfı, ıpv6 desteği sağlamak için bu yeni bir Windows yuva işlevleri kullanır. ATL ve Microsoft Foundation Classes (MFC) diğer sınıfların CSocketAddr sınıfı ıpv6 desteği sağlamak için de. Örneğin, CAsyncSocket sınıfı ve CSMTPConnection sınıfı CSocketAddr sınıfını kullanın.

Not Bir MFC sınıfı CAsyncSocket sınıftır. CSMTPConnection sınıfı, bir ATL sınıftır.

Açıklanan bir sorunu "Belirtiler" bölümünde Windows Server 2003 veya Windows XP çalıştıran bir bilgisayarda FreeAddrInfo Windows yuva işlevi kullanan Unicode etkin uygulama oluşuyor. ATL CSocketAddr sınıfı FreeAddrInfo işlevi kullandığından, aynı sorun, ATL 7. 1 ' de oluşur. ATL 7. 1'i ve MFC 7.1, ıpv6 desteğini etkinleştirmek için CSocketAddr sınıfı kullanan herhangi bir sınıf, bu davranışı gösterir. Örneğin, CAsyncSocket sınıfı ve CSMTPConnection sınıfı CSocketAddr sınıfını kullanın.

ATL sunucu sınıfları CAtlHttpClient ve CSoapSocketClientTZEvtSyncSocket sınıfını kullanın ve aynı hatayı görüntüler. Bu davranış, ZEvtSyncSocket iç sınıf CSocketAddr sınıfı uygulaması kullanması nedeniyle oluşur.

NotCAtlHttpClient sınıfı, HTTP istemcisi desteği sağlar. CSoapSocketClientT sınıfı, XML Web Hizmetleri için istemci desteği sağlar.

Referanslar

ATL için yapılan değişiklikler hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/aa983525(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa983525(VS.71).aspx)
Windows Socket APı'SINE eklenen yeni Windows yuva işlevleri hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms740642.aspx (http://msdn2.microsoft.com/en-us/library/ms740642.aspx)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition, Ne zaman ne ile kullanilir:
    • Microsoft Windows Server 2003 Datacenter Edition
    • Microsoft Windows Server 2003 Enterprise Edition
    • Microsoft Windows Server 2003 Standard Edition
    • Microsoft Windows Server 2003 Web Edition
    • Microsoft Windows XP Professional Edition
    • Microsoft Windows XP Home Edition
Anahtar Kelimeler: 
kbmt kbwinsock kbapi kbappdev kbbug KB822334 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:822334  (http://support.microsoft.com/kb/822334/en-us/ )