Bagikan melalui


LNK4098 Peringatan Alat Linker

defaultlib 'library' konflik dengan penggunaan libs lain; gunakan /NODEFAULTLIB:library

Anda mencoba menautkan dengan pustaka yang tidak kompatibel.

Catatan

Pustaka run-time sekarang berisi arahan untuk mencegah pencampuran berbagai jenis. Anda akan menerima peringatan ini jika Anda mencoba menggunakan berbagai jenis atau debug dan versi non-debug pustaka run-time dalam program yang sama. Misalnya, jika Anda mengkompilasi satu file untuk menggunakan satu jenis pustaka run-time dan file lain untuk menggunakan jenis lain (misalnya, debug versus ritel) dan mencoba menautkannya, Anda akan mendapatkan peringatan ini. Anda harus mengkompilasi semua file sumber untuk menggunakan pustaka run-time yang sama. Untuk informasi selengkapnya, lihat opsi pengkompilasi /MD, /MT, /LD (Gunakan Pustaka Run-Time).

Anda dapat menggunakan sakelar /VERBOSE:LIB linker untuk mengetahui pustaka mana yang dicari linker. Misalnya, ketika executable Anda menggunakan pustaka run-time multi-threaded, non-debug, daftar yang dilaporkan harus menyertakan LIBCMT.lib, dan bukan LIBCMTD.lib, MSVCRT.lib, atau MSVCRTD.lib. Anda dapat memberi tahu linker untuk mengabaikan pustaka run-time yang salah dengan menggunakan /NODEFAULTLIB untuk setiap pustaka yang ingin Anda abaikan.

Tabel di bawah ini memperlihatkan pustaka mana yang harus diabaikan bergantung pada pustaka run-time mana yang ingin Anda gunakan. Pada baris perintah, gunakan satu opsi /NODEFAULTLIB agar setiap pustaka diabaikan. Di IDE Visual Studio, pisahkan pustaka untuk diabaikan oleh titik koma di properti Abaikan Pustaka Default Tertentu.

Untuk menggunakan pustaka run-time ini Abaikan pustaka ini
Multithreaded (libcmt.lib) msvcrt.lib; libcmtd.lib; msvcrtd.lib
Multithread menggunakan DLL (msvcrt.lib) libcmt.lib; libcmtd.lib; msvcrtd.lib
Debug Multithreaded (libcmtd.lib) libcmt.lib; msvcrt.lib; msvcrtd.lib
Debug Multithreaded menggunakan DLL (msvcrtd.lib) libcmt.lib; msvcrt.lib; libcmtd.lib

Misalnya, jika Anda menerima peringatan ini dan ingin membuat file yang dapat dieksekusi yang menggunakan versi DLL non-debug dari pustaka run-time, Anda dapat menggunakan opsi berikut dengan linker:

/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib