Внутрішні відомості служби підтримки Microsoft
Помилка #: 101959 (Visual Studio)
Загальні відомості
При створенні DLL за допомогою до 64-розрядної версії Microsoft Visual C++-компілятор та зв'язування, зв'язування код помилки, LNK4197 може з'явитися, якщо функція оголосила для експорту більше одного разу.
Ознаки
Можливо, зв'язування результати приблизно такого вигляду:
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
Причина
Зв'язування, код помилки, LNK4197, створюється, коли функція оголосила для експорту більше одного разу. Оголошена функції для експорту в одній із таких способів:
-
Функція оголошена за допомогою ключових слів __declspec(dllexport) вихідний файл C:
__declspec(dllexport) int DllSample() { return 42;}
-
Функція оголошена за допомогою визначення модуля (. Чіткості) файл:
EXPORTS DllSample
Така помилка, зв'язування найчастіше виникає під час __declspec(dllexport) -ключове і. Чіткості файл використовується для визначення таким самим іменем функції в. Бібліотека DLL проект.
Спосіб вирішення
Щоб вирішити цю проблему, визначати експортованого функції лише один раз, за допомогою ключових слів __declspec(dllexport) або за допомогою до. Чіткості файл. Не використовуйте обидва ці методи.
Стан
Така поведінка передбачена.
Додаткові відомості
Призначення функції для експорту більше одного разу не може викликати зв'язування про помилку, описане в розділі "Ознаки" цієї статті у 32-розрядні версії Microsoft Windows C++-компілятор та зв'язування. Проте, корпорація Майкрософт рекомендує, визначені для 32- і 64-розрядних версій Windows C++ компілятор та зв'язування функція експорту, лише один раз.