Microsoft iekšējā atbalsta informācija
101959 (Visual Studio) kļūdas numurs:
Kopsavilkums
Veidojot DLL, izmantojot Microsoft Visual C++ kompilatora un Linker 64 bitu versija, Linker kļūdas numuru LNK4197 var saņemt, ja funkcija ir atzīts eksportēt vairāk nekā vienu reizi.
Simptomi
Linker izvade var būt līdzīgs šim:
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
Cēlonis
Linker LNK4197 kļūdas numurs tiek ģenerēts, kad funkcija ir atzīts eksportēt vairāk nekā vienu reizi. Funkcija ir paziņojusi eksportam, izmantojot vienu no šiem paņēmieniem:
-
Šī funkcija ir norādījis __declspec(dllexport) atslēgvārdu izmantošana C avota failu:
__declspec(dllexport) int DllSample() { return 42;}
-
Funkcija ir paziņojusi, izmantojot moduļa definīcijas (. DEF) failu:
EXPORTS DllSample
Linker kļūda var rasties biežāk, __declspec(dllexport) atslēgvārdu un. DEF failā tiek izmantoti, lai noteiktu to pašu funkciju nosaukumu. DLL projektu.
Risinājums
Lai novērstu šo problēmu, definētu eksportētās funkcijas tikai vienu reizi, izmantojot __declspec(dllexport) atslēgvārdu vai izmantojot. DEF failā. Nelietojiet no šīm metodēm.
Statuss
Šī darbība ir ar nolūku.
Papildinformācija
Paziņojot vairākas reizes eksportēšanas funkcija var nesniegt Linker Linker un C++ kompilators Microsoft Windows 32 bitu versijās šī raksta sadaļā "Simptomi" aprakstītā kļūda. Tomēr korporācija Microsoft iesaka gan 32 bitu un 64 bitu versijas Windows C++ kompilators un Linker definējat funkcija eksportu tikai vienu reizi.