Bagikan melalui


LNK2038 Kesalahan Alat Linker

ketidakcocokan terdeteksi untuk 'name': value 'value_1' tidak cocok dengan nilai 'value_2' di filename.obj

Simbol tidak cocok telah terdeteksi oleh linker. Kesalahan ini menunjukkan bahwa berbagai bagian aplikasi, termasuk pustaka atau kode objek lain yang ditautkan aplikasi, menggunakan definisi simbol yang bertentangan. Pragma yang tidak cocok deteksi digunakan untuk menentukan simbol tersebut dan mendeteksi nilai yang bertentangan.

Kemungkinan penyebab dan solusi

Kesalahan ini dapat terjadi ketika file objek di proyek Anda sudah kedaluarsa. Sebelum Anda mencoba solusi lain untuk kesalahan ini, lakukan build bersih untuk memastikan bahwa file objek saat ini.

Visual Studio menentukan simbol berikut untuk mencegah penautan kode yang tidak kompatibel, yang dapat menyebabkan kesalahan run-time atau perilaku tak terduga lainnya.

  • _MSC_VER Menunjukkan nomor versi utama dan minor dari pengkompilasi Microsoft C++ (MSVC) yang digunakan untuk membangun aplikasi atau pustaka. Kode yang dikompilasi dengan menggunakan satu versi MSVC tidak kompatibel dengan kode yang dikompilasi dengan menggunakan versi yang memiliki nomor versi utama dan minor yang berbeda. Untuk informasi selengkapnya, lihat _MSC_VER di Makro yang Telah Ditentukan sebelumnya.

    Jika Anda menautkan ke pustaka yang tidak kompatibel dengan versi MSVC yang Anda gunakan, dan Anda tidak dapat memperoleh atau membangun versi pustaka yang kompatibel, Anda dapat menggunakan versi compiler yang lebih lama untuk membangun proyek Anda: mengubah properti Platform Toolset proyek ke toolset sebelumnya. Untuk informasi selengkapnya, lihat Cara: Memodifikasi Kerangka Kerja Target dan Set Alat Platform.

  • _ITERATOR_DEBUG_LEVEL Menunjukkan tingkat fitur keamanan dan penelusuran kesalahan yang diaktifkan di Pustaka Standar C++. Fitur-fitur ini dapat mengubah representasi objek Pustaka Standar C++ tertentu dan dengan demikian membuatnya tidak kompatibel dengan yang menggunakan fitur keamanan dan penelusuran kesalahan yang berbeda. Untuk informasi selengkapnya, lihat _ITERATOR_DEBUG_LEVEL.

  • RuntimeLibrary Menunjukkan versi Pustaka Standar C++ dan runtime C yang digunakan oleh aplikasi atau pustaka. Kode yang menggunakan satu versi C++ Standard Library atau runtime C tidak kompatibel dengan kode yang menggunakan versi yang berbeda. Untuk informasi selengkapnya, lihat /MD, /MT, /LD (Gunakan Pustaka Run-Time).

  • _PPLTASKS_WITH_WINRT Menunjukkan bahwa kode yang menggunakan Pustaka Pola Paralel (PPL) ditautkan ke objek yang dikompilasi dengan menggunakan pengaturan yang berbeda untuk opsi pengkompilasi /ZW . (/ZW mendukung C++/CX.) Kode yang menggunakan atau bergantung pada PPL harus dikompilasi dengan menggunakan pengaturan yang sama yang /ZW digunakan di aplikasi lainnya.

Pastikan bahwa nilai simbol ini konsisten di seluruh proyek dalam solusi Visual Studio Anda, dan juga konsisten dengan kode dan pustaka yang ditautkan aplikasi Anda.

Masalah pustaka pihak ketiga dan vcpkg

Jika Anda melihat kesalahan ini saat mencoba mengonfigurasi pustaka pihak ketiga sebagai bagian dari build Anda, pertimbangkan untuk menggunakan vcpkg, manajer paket C++, untuk menginstal dan membangun pustaka. vcpkg mendukung daftar pustaka pihak ketiga yang besar dan berkembang, dan menetapkan semua properti konfigurasi dan dependensi yang diperlukan untuk build yang berhasil sebagai bagian dari proyek Anda.

Baca juga

Kesalahan dan Peringatan Alat Linker