Suvestinė
Kai kuriate DLL naudojant 64 bitų versija, Microsoft Visual C++ kompiliatorių ir konfigūruoti jungtis, gali būti parodytas klaidos kodas LNK4197 saitai jei funkcija yra paskelbtas eksportuoti daugiau nei vieną kartą.
Simptomai
Išvesties saitai gali būti panašus į šį:
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
Priežastis
Klaidos numeris LNK4197 saitai yra generuojamas, kai funkcija yra paskelbtas eksportuoti daugiau nei vieną kartą. Funkcija yra paskelbta eksportuoti į vieną iš šių būdų:
-
Funkcija paskelbė __declspec(dllexport) raktažodžių naudojimas jūsų C šaltinio failo:
__declspec(dllexport) int DllSample() { return 42;}
-
Funkcija yra paskelbta naudojant modulio apibrėžimo (. DEF) failą:
EXPORTS DllSample
Ši klaida saitai gali kilti dažniausiai kai __declspec(dllexport) raktažodžių ir. DEF failas yra naudojami tuo pačiu funkcija pavadinimu a. DLL projektą.
Sprendimas
Norėdami išspręsti šią problemą, nustatykite eksportuotų funkcijų tik vieną kartą, naudodami toliau __declspec(dllexport) arba naudodami su. DEF failą. Negalima naudoti abu šiuos būdus.
Būsena
Tai yra sisteminis apribojimas.
Daugiau informacijos
Paskelbti funkcija eksportuoti daugiau nei vieną kartą gali sukelti 32 bitų versijos Microsoft Windows C++ kompiliatorių ir konfigūruoti jungtis šio straipsnio skyriuje "Požymiai" aprašytas klaidos saitai. Tačiau, Microsoft rekomenduoja, galite nustatyti funkcija eksportuoti tik vieną kartą 32 bitų ir 64 bitų versijos "Windows" C++ kompiliatorių ir konfigūruoti jungtis.