ID Artikel: 822334 - Kajian Terakhir: 05 Oktober 2011 - Revisi: 2.0

BUG: Tidak dapat menemukan titik entri prosedur FreeAddrInfoW ketika Anda menjalankan aplikasi di Windows Server 2003 atau Windows XP

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Catatan Microsoft Visual C++.NET 2002 dan Microsoft Visual C++.NET 2003 mendukung kedua kode dikelola model yang disediakan oleh Microsoft.NET Framework dan tidak dikelola asli Microsoft Windows kode model. Informasi di dalam artikel ini hanya berlaku untuk kode Visual C++ unmanaged.

Pada Halaman ini

Perbesar semua | Perkecil semua

GEJALA

Ketika Anda menjalankan Unicode-enabled aplikasi yang menggunakan FreeAddrInfo Fungsi Windows soket, atau yang menggunakan penolong kelas seperti ATL::CSocketAddr pada komputer yang menjalankan Microsoft Windows Server 2003 atau Microsoft Windows XP, Anda mungkin menerima pesan galat berikut:
Titik entri prosedur FreeAddrInfoW bisa tidak terletak di dynamic link perpustakaan WS2_32.dll.

PENYEBAB

Ws2_32.dll perpustakaan tidak ekspor simbol FreeAddrInfoW yang harus Anda miliki untuk menggunakan versi Unicode FreeAddrInfo fungsi.

PEMECAHAN MASALAH

Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:
  1. Salin berkas Atlsocket.h ke direktori apapun yang Anda ingin gunakan. File ini terletak di direktori berikut:
    Program files Microsoft Visual Studio.NET 2003\Vc7\atlmfc\include
  2. Tambahkan blok berikut kode untuk salinan berkas Atlsocket.h yang Anda buat pada langkah 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. Mulai Microsoft Visual C++.
  4. Pada Alat menu, klik Opsi. Di panel kiri Opsi kotak dialog, memperluas Proyek, lalu klik VC ++ direktori.

    Catatan Jika Anda menggunakan Visual C++ Express Edition, memperluas Proyek-proyek dan solusi di panel kiri Opsi kotak dialog, dan kemudian klik VC ++ direktori.
  5. Di bawah Tampilkan direktori untuk, klik Termasuk file. Kemudian, tambahkan direktori di mana versi modifikasi dari Atlsocket.h file terletak ke bagian atas daftar.
  6. Membangun aplikasi

STATUS

Microsoft telah mengkonfirmasi bahwa ini adalah bug dalam produk Microsoft sebagaimana didaftar di dalam bagian "Berlaku untuk".

INFORMASI LEBIH LANJUT

Langkah-langkah untuk menyalin masalah

  1. Mulai Microsoft Visual Studio.NET 2003.
  2. Pada Berkas menu, titikBaru, lalu klik Project.
  3. KlikVisual C++ proyek di bawah Jenis proyek. Kemudian, klik Proyek konsol Win32 di bawahPola acu.
  4. Dalam Nama kotak, jenisSampel, lalu klik Oke.
  5. Dalam Aplikasi Win32 Wizard dialog kotak, klik untuk memilih The ATL dan Menambahkan dukungan untuk kotak centang di bawah Pengaturan aplikasi, dan kemudian Klik Menyelesaikan.
  6. Dalam Sample.cpp file, menggantikan kode standar yang ada dengan kode berikut.
    #include "stdafx.h"
    #include <atlsocket.h>
    
    void _tmain()
    {
    	CSocketAddr aSocketAddr;
    }
  7. Dalam solusi Explorer, klik kanan proyek node, dan kemudian klik Properti.
  8. Dalam proyek Halaman properti kotak dialog, Klik General di bawah Konfigurasi propertidalam pane kiri. Dalam pane kanan, mengatur Karakter Set properti untuk Menggunakan Set karakter Unicode. KlikOke.
  9. Pada Bangun menu, klik Bangun Solusi untuk membangun aplikasi. Anda mungkin menyadari bahwa tidak ada kesalahan kompilasi atau menghubungkan kesalahan terjadi selama proses membangun.
  10. Pada Debug menu, klik Mulai Tanpa Debugging. Anda dapat melihat bahwa Anda menerima pesan galat yang dijelaskan di bagian "Gejala".
Pada Windows Server 2003 dan Windows XP, Windows soket fungsi baru ditambahkan ke Windows Socket API. GetAddrInfo dan FreeAddrInfo dua baru Windows soket fungsi yang ditambahkan untuk berurusan dengan Versi 6 (IPv6) protokol Internet dan Internet Protocol versi 4 (IPv4) alamat. Perpustakaan Template aktif (ATL) 7.1 CSocketAddr kelas menggunakan fungsi-fungsi ini baru Windows soket untuk memberikan dukungan untuk IPv6. Lain ATL dan Microsoft Foundation Classes (MFC) kelas juga digunakan CSocketAddr kelas untuk memberikan dukungan IPv6. Sebagai contoh, CAsyncSocket kelas dan CSMTPConnection kelas penggunaan CSocketAddr kelas.

Catatan The CAsyncSocket kelas adalah kelas MFC. The CSMTPConnection kelas adalah kelas ATL.

Masalah yang dijelaskan dalam "Gejala" bagian yang terjadi dalam aplikasi diaktifkan Unicode yang menggunakan FreeAddrInfo Soket Windows fungsi pada komputer yang menjalankan Windows Server 2003 atau Windows XP. Karena ATL CSocketAddr kelas menggunakan FreeAddrInfo fungsi, masalah yang sama juga terjadi di ATL 7.1. Setiap kelas di ATL 7,1 dan MFC 7.1 yang menggunakan CSocketAddr kelas untuk mengaktifkan dukungan IPv6 mencerminkan perilaku ini. Sebagai contoh, CAsyncSocket kelas dan CSMTPConnection kelas penggunaan CSocketAddr kelas.

ATL server kelas seperti CAtlHttpClient dan CSoapSocketClientT menggunakan ZEvtSyncSocket kelas, dan menampilkan kesalahan yang sama. Perilaku ini terjadi karena ZEvtSyncSocket menggunakan internal kelas CSocketAddr kelas dalam pelaksanaannya.

Catatan The CAtlHttpClient kelas menyediakan dukungan klien HTTP. The CSoapSocketClientT kelas menyediakan dukungan klien layanan XML Web.

REFERENSI

Untuk informasi lebih lanjut tentang perubahan yang telah dibuat untuk ATL, kunjungi situs Web Microsoft Developer Network (MSDN) berikut:
.aspx http://msdn2.Microsoft.com/en-us/library/aa983525 (VS.71) (http://msdn2.microsoft.com/en-us/library/aa983525(VS.71).aspx)
Untuk informasi lebih lanjut tentang fungsi soket Windows baru yang telah ditambahkan ke soket Windows API, kunjungi Website MSDN site:
http://msdn2.Microsoft.com/en-us/library/ms740642.aspx (http://msdn2.microsoft.com/en-us/library/ms740642.aspx)

Berlaku bagi:
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition, ketika digunakan dengan:
    • 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
Kata kunci: 
kbwinsock kbapi kbappdev kbmt KB822334 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:822334  (http://support.microsoft.com/kb/822334/en-us/ )