Informasi Dukungan Internal Microsoft

BUG #: 101959 (Visual Studio)

Ringkasan

Ketika Anda membangun DLL dengan menggunakan versi 64-bit dari Microsoft Visual C++ Compiler dan Linker, Anda mungkin menerima Linker nomor galat LNK4197 jika fungsi telah dinyatakan ekspor lebih dari satu kali.

Gejala

Linker output mungkin mirip dengan berikut ini:

C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll  Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification   Creating library Sample.lib and object Sample.exp 

Penyebab

Linker nomor galat LNK4197 yang dihasilkan saat fungsi telah dinyatakan ekspor lebih dari satu kali. Fungsi menyatakan ekspor di salah satu cara berikut:

  • Fungsi menyatakan dengan menggunakan kata kunci __declspec(dllexport) di file sumber C:

    __declspec(dllexport) int DllSample() {   return 42;}
  • Fungsi menyatakan menggunakan definisi modul (. Berkas DEF):

    EXPORTS   DllSample

Galat Linker ini mungkin terjadi paling sering ketika kata kunci __declspec(dllexport) kedua dan. DEF berkas yang digunakan untuk menetapkan nama fungsi yang sama di. Proyek DLL.

Pemecahan Masalah

Untuk mengatasi perilaku ini, tentukan diekspor fungsi hanya satu kali, dengan menggunakan kata kunci __declspec(dllexport) atau dengan menggunakan. DEF file. Jangan gunakan kedua metode ini.

Status

Perilaku ini merupakan bagian dari rancangan.

Informasi Selengkapnya

Menyatakan fungsi ekspor lebih dari satu kali mungkin tidak menghasilkan galat Linker yang dijelaskan di bagian "Gejala" dari artikel ini dalam versi 32-bit dari Microsoft Windows C++ Compiler dan Linker. Namun, Microsoft menyarankan Anda untuk menentukan fungsi ekspor hanya satu kali dalam versi 32-bit dan 64-bit Windows C++ Compiler dan Linker.

Perlu bantuan lainnya?

Kembangkan keterampilan Anda

JELAJAHI PELATIHAN >

Dapatkan fitur baru terlebih dahulu

GABUNG MICROSOFT INSIDER >

Apakah informasi ini bermanfaat?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?

Terima kasih atas umpan balik Anda!

×