Informații interne de asistență Microsoft
Număr eroare: 101959 (Visual Studio)
Rezumat
La compilarea un DLL utilizând versiunea pe 64 de biți de Microsoft Visual C++ compilator și Linker, este posibil să primiți Linker număr eroare LNK4197 dacă o funcție a fost declarate la export mai mult decât o singură dată.
Simptome
Ieșire Linker poate fi asemănător cu următorul:
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
Cauză
Număr eroare LNK4197 linker-ul este generat atunci când o funcție a fost declarate la export mai mult decât o singură dată. O funcție este declarate la export în una dintre următoarele moduri:
-
Funcția este declarat utilizând cuvinte cheie __declspec(dllexport) în fişierul sursă C:
__declspec(dllexport) int DllSample() { return 42;}
-
Funcția este declarat utilizând o definiție de module (. Fişierul definiţie):
EXPORTS DllSample
Această eroare Linker se poate produce cel mai frecvent atunci când atât __declspec(dllexport) cuvinte cheie și o. Fişierul definiţie sunt folosite pentru a defini cu același nume de funcție în o. Proiect DLL.
Rezolvare
Pentru a rezolva acest comportament, definiți de funcții exportate numai o singură dată, prin utilizarea __declspec(dllexport) cuvântul cheie sau utilizând un. Fişierul definiţie. Nu utilizați ambele dintre aceste metode.
Stare
Acest comportament este proiectat.
Mai multe informații
Declara o funcție de export mai multe ori nu pot produce eroarea Linker care este descrisă în secțiunea "Simptome" din acest articol în versiunile de 32 de biți de Microsoft Windows compilator C++ și Linker. Cu toate acestea, Microsoft recomandă ca definiţi function exporturi numai o singură dată în versiunile atât 32 de biți și 64 de biți de Windows compilator C++ și Linker.