Поделиться через


Использование библиотеки импорта и файла экспорта

Если программа (исполняемый файл или БИБЛИОТЕКА DLL) экспортируется в другую программу, из которой она также импортируется, или если более двух программ экспортируются и импортируются друг с другом, команды для связывания этих программ должны содержать циклические экспорты.

В ситуации без циклического экспорта при связывании программы, которая использует экспорт из другой программы, необходимо указать библиотеку импорта для программы экспорта. Библиотека импорта для программы экспорта создается при связывании этой программы экспорта. Поэтому перед импортом программы необходимо связать программу экспорта. Например, если TWO.dll импортируется из ONE.dll, необходимо сначала связать ONE.dll и получить библиотеку импорта ONE.lib. Затем при связывании TWO.dll укажите ONE.lib. Когда компоновщик создает TWO.dll, он также создает библиотеку импорта TWO.lib. Используйте TWO.lib при связывании программ, импортируемых из TWO.dll.

Однако в циклической ситуации экспорта невозможно связать все межзависимые программы с помощью библиотек импорта из других программ. В примере, описанном ранее, если TWO.dll также экспортируется в ONE.dll, библиотека импорта для TWO.dll еще не будет существовать, когда ONE.dll связана. При наличии циклических экспортов необходимо использовать LIB для создания библиотеки импорта и экспорта файла для одной из программ.

Чтобы начать, выберите одну из программ, на которых нужно запустить LIB. В команде LIB выведите список всех объектов и библиотек для программы и укажите /DEF. Если программа использует файл .def или спецификации /EXPORT, укажите их также.

После создания библиотеки импорта (.lib) и файла экспорта (.exp) для программы вы используете библиотеку импорта при связывании другой программы или программ. LINK создает библиотеку импорта для каждой сборки программы экспорта. Например, если вы запускаете LIB на объектах и экспортируете для ONE.dll, создайте ONE.lib и ONE.exp. Теперь вы можете использовать ONE.lib при связывании TWO.dll; этот шаг также создает библиотеку импорта TWO.lib.

Наконец, свяжите программу, с чего вы начали. В команде LINK укажите объекты и библиотеки для программы, файл .exp, созданный для программы, и библиотеки импорта для экспортов, используемых программой. Чтобы продолжить пример, команда LINK для ONE.dll содержит ONE.exp и TWO.lib, а также объекты и библиотеки, которые входят в ONE.dll. Не указывайте спецификации DEF-файла или /EXPORT в команде LINK; Они не нужны, так как определения экспорта содержатся в файле .exp. При связывании с помощью exp-файла LINK не создает библиотеку импорта, так как предполагается, что она была создана при создании exp-файла.

См. также

Работа с библиотеками импорта и файлами экспорта