Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
'filename.obj' içinde tanımlanan 'symbol' simgesi içeri aktarıldı
Açıklamalar
__declspec(dllimport), simge aynı görüntüdeki filename.obj nesne dosyasında tanımlansa bile simge için belirtildi. Bu uyarıyı __declspec(dllimport) çözmek için değiştiriciyi kaldırın.
Bu uyarı, bir nesne dosyasında bir simge tanımladığınızda ve bildirim değiştiricisini __declspec(dllimport) başka bir nesne dosyasında kullanarak başvurduğunda bağlayıcı tarafından oluşturulur.
Uyarı LNK4049 Bağlayıcı Araçları Uyarı LNK4217 daha genel bir sürümüdür. Bağlayıcı, içeri aktarılan simgeye hangi işleve veya nesne dosyasına başvurduysa LNK4049 uyarı oluşturur.
LNK4217 yerine LNK4049 oluşturulduğu yaygın durumlar şunlardır:
/INCREMENTAL seçeneğini kullanırken.
/LTCG seçeneğini kullanırken.
LNK4049 çözmek için aşağıdaki yordamlardan birini deneyin:
değiştiriciyi
__declspec(dllimport), LNK4049 tetikleyen simgenin ileri bildiriminden kaldırın. DUMPBIN yardımcı programını kullanarak ikili görüntüdeki simgeleri arayabilirsiniz. DUMPBIN /SYMBOLS anahtarı, görüntünün COFF sembol tablosunu görüntüler. DUMPBIN yardımcı programı hakkında daha fazla bilgi için bkz. DUMPBIN Başvurusu.Artımlı bağlamayı ve tam program iyileştirmesini geçici olarak devre dışı bırakın. Yeniden derlendiğinde uygulama, içeri aktarılan simgeye başvuran işlevin adını içeren Uyarı LNK4217 oluşturur.
__declspec(dllimport)İçeri aktarılan simgeden bildirim değiştiricisini kaldırın ve artımlı bağlamayı veya tam program iyileştirmesini gerektiği gibi yeniden etkinleştirin.
Oluşturulan son kod doğru şekilde davransa da, içeri aktarılan işlevi çağırmak için oluşturulan kod işlevi doğrudan çağırmaktan daha az verimlidir. /clr seçeneğini kullanarak derleme yaptığınızda bu uyarı görünmez.
Veri içeri ve dışarı aktarma bildirimleri hakkında daha fazla bilgi için bkz . dllexport, dllimport.
Örnek
Aşağıdaki iki modülün bağlanması LNK4049 oluşturur. İlk modül, dışarı aktarılan tek bir işlev içeren bir nesne dosyası oluşturur.
// LNK4049a.cpp
// compile with: /c
__declspec(dllexport) int func()
{
return 3;
}
İkinci modül, ilk modülde dışarı aktarılan işleve iletme bildirimi içeren bir nesne dosyası ve işlevin main içindeki bu işleve yönelik bir çağrı oluşturur. Bu modülü ilk modüle bağlamak LNK4049 oluşturur. Uyarıyı __declspec(dllimport) çözmek için bildirimden değiştiriciyi kaldırın.
// LNK4049b.cpp
// compile with: /link /WX /LTCG LNK4049a.obj
// LNK4049 expected
__declspec(dllimport) int func();
// try the following line instead
// int func();
int main()
{
return func();
}
Ayrıca bkz.
Bağlayıcı Araçları Uyarısı LNK4217
Bağlayıcı Araçları Uyarısı LNK4286
dllexport, dllimport