Появляется сообщение об ошибке LNK4197 в 64-разрядной версии компилятора Visual C++

Аннотация

При построении библиотеки 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;}
  • Функция объявлена с помощью определения модуля (. Файл DEF):

    EXPORTS   DllSample

Эта ошибка компоновщика возникает чаще всего при обоих ключевое слово __declspec(dllexport) и. DEF-файла используются для определения с тем же именем функции. Проект библиотеки DLL.

Решение

Для решения этой проблемы необходимо определить экспортируемые функции с только один раз, с помощью ключевого слова __declspec(dllexport) или с помощью. DEF-файла. Не следует использовать оба этих метода.

Статус

Данное поведение является особенностью.

Дополнительная информация

Объявление функции для экспорта более чем один раз может привести к ошибке компоновщика, описанное в разделе «Проблема» данной статьи в 32-разрядных версий Microsoft Windows C++ компилятора и компоновщика. Тем не менее Корпорация Майкрософт рекомендует определить экспортируемые функции только один раз в 32-разрядных и 64-разрядных версиях Windows C++ компилятора и компоновщика.

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×