LNK4217 Peringatan Alat Linker
simbol 'simbol' yang didefinisikan dalam 'filename_1.obj' diimpor oleh 'filename_2.obj' dalam fungsi 'function'
__declspec(dllimport) ditentukan untuk simbol meskipun simbol didefinisikan dalam file objek dalam gambar yang sama. Hapus pengubah __declspec(dllimport)
untuk mengatasi peringatan ini.
Keterangan
simbol adalah nama simbol yang ditentukan dalam gambar. fungsi adalah fungsi yang mengimpor simbol .
Peringatan ini tidak muncul saat Anda mengkompilasi dengan menggunakan opsi /clr .
LNK4217 juga dapat terjadi jika Anda mencoba menautkan dua modul bersama-sama, ketika sebaliknya Anda harus mengkompilasi modul kedua dengan pustaka impor modul pertama.
// main.cpp
__declspec(dllimport) void func();
int main()
{
func();
return 0;
}
Kemudian,
// tt.cpp
// compile with: /c
void func() {}
Mencoba mengkompilasi kedua modul ini seperti yang ditunjukkan di sini akan menghasilkan LNK4217:
cl.exe /c main.cpp tt.cpp
link.exe main.obj tt.obj
Untuk memperbaiki kesalahan, setelah mengkompilasi dua file, teruskan tt.obj ke lib.exe untuk membuat file .lib, lalu tautkan main.obj dengan tt.lib seperti yang ditunjukkan di sini:
cl.exe /c main.cpp tt.cpp
lib.exe tt.obj /export:func /def
link.exe main.obj tt.lib
Baca juga
LNK4049 Peringatan Alat Linker
LNK4286 Peringatan Alat Linker
dllexport, dllimport
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk