Bağlayıcı Araçları Uyarısı LNK4217
'filename_1.obj' içinde tanımlanan 'symbol' simgesi 'function' işlevindeki 'filename_2.obj' tarafından içeri aktarıldı
__declspec(dllimport), simge aynı görüntüdeki bir nesne dosyasında tanımlansa bile bir simge için belirtildi. Bu uyarıyı __declspec(dllimport)
çözmek için değiştiriciyi kaldırın.
Açıklamalar
simgesi , görüntü içinde tanımlanan simge adıdır. işlevi , simgeyi içeri aktaran işlevdir.
/clr seçeneğini kullanarak derleme yaptığınızda bu uyarı görünmez.
LNK4217, iki modülü birbirine bağlamaya çalıştığınızda da oluşabilir; bunun yerine ikinci modülü ilk modülün içeri aktarma kitaplığıyla derlemeniz gerekir.
// main.cpp
__declspec(dllimport) void func();
int main()
{
func();
return 0;
}
Ve sonra,
// tt.cpp
// compile with: /c
void func() {}
Bu iki modülü burada gösterildiği gibi derlemeye çalışmak LNK4217 neden olur:
cl.exe /c main.cpp tt.cpp
link.exe main.obj tt.obj
Hatayı düzeltmek için, iki dosyayı derledikten sonra tt.obj dosyasını lib.exe dosyasına geçirerek bir .lib dosyası oluşturun ve burada gösterildiği gibi main.obj dosyasını tt.lib ile bağlayın:
cl.exe /c main.cpp tt.cpp
lib.exe tt.obj /export:func /def
link.exe main.obj tt.lib
Ayrıca bkz.
Bağlayıcı Araçları Uyarısı LNK4049
Bağlayıcı Araçları Uyarısı LNK4286
dllexport, dllimport
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin