Microsoft İç Destek Bilgileri
# Hata: 101959 (Visual Studio)
Özet
Microsoft Visual C++ Derleyici ve bağlayıcı 64-bit sürümünü kullanarak bir DLL oluştururken, daha fazla zaman vermek için bir işlev bildirdiyseniz Linker Hata numarası LNK4197 alabilirsiniz.
Belirtiler
Bağlayıcı çıktı aşağıdakine benzer olabilir:
C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification Creating library Sample.lib and object Sample.exp
Neden
Daha fazla zaman vermek için bir işlev bildirilmiş Linker Hata numarası LNK4197 üretilir. Bir işlev dışa aktarmak için aşağıdaki yollardan biriyle bildirilmiþtir:
-
İşlev C kaynak dosyanızdaki __declspec(dllexport) anahtar sözcüğü kullanılarak bildirilir:
__declspec(dllexport) int DllSample() { return 42;}
-
İşlev bir modül tanımı kullanılarak bildirilen (. DEF) dosyası:
EXPORTS DllSample
Bu bağlayıcı hatanın sık karşılaşılan zaman __declspec(dllexport) anahtar ve bir. DEF dosyası aynı işlev adı tanımlamak için kullanılan bir. DLL projesi.
Çözüm
Bu davranışı gidermek için dışarı aktarılan işlevler yalnızca bir kez __declspec(dllexport) anahtar sözcüğünü kullanarak veya kullanarak tanımlayan bir. DEF dosyası. Bu yöntemlerin her ikisi de kullanmayın.
Durum
Bu davranış normaldir.
Ek Bilgi
Daha fazla zaman vermek bir işlev bildirmenin 32-bit sürümlerinde Microsoft Windows C++ Derleyici ve bağlayıcı bu makalenin "Belirtiler" bölümünde açıklanan Linker Hata üretmeyebilir. Ancak, Microsoft 32-bit hem de 64-bit sürümlerinde Windows C++ Derleyici ve bağlayıcı işlevi dışarı yalnızca bir kez tanımlamak önerir.