Главная » C++, C++ Builder » Использование программы Implib в CBuilder

0

Программа Implib предназначена для создания библиотек импорта (import libraries) для DLL (динамически связываемых  библиотек), которые вы хотите подключить к своему приложению. Важно использовать именно версию  Borland CBuilder этой программы при создании библиотек импорта для использования в приложениях CBuilder. Более старые версии фирмы Borland или же аналоги других фирм создадут библиотеки, некорректно поддерживаемые CBuilder, что повлечет за собой появление в вашей программе сообщений об ошибках странного содержания. Мы рассмотрим использование DLL в CBuilder, равно как и создание DLL в CBuilder для других приложений, в следующей главе. А сейчас давайте просто рассмотрим те шаги, которые надо предпринять для создания библиотеки импорта для использова ния в вашем основном приложении в CBuilder.

Предположим, что у вас есть DLL, которую вы хотели бы использовать в вашем приложении. Эта DLL могла быть создана в CBuilder, в Visual C++, в Delphi или в любой другой системе, способной создавать DLL. Есть две основные вещи, которые вам хотелось бы сделать для использования этой динамической библиотеки (DLL). Во-первых, сгенерировать файл библиотеки импорта (.lib) для этой DLL, который можно подключить к вашему исполняемому файлу. Это делается командой implib. Во-вторых, вам бы хотелось знать, какие функции в DLL можно вызывать. Это получается так: вы берете только что сгенерированную implib библиотеку импорта и передаете ее как параметр команде tlib, которая создаст листинг функций, доступных в библиотеке. Используя эти две программы, вы можете создать файл листинга для любого стандартного DLL-файла в системе Windows.

Давайте используем программу implib для создания библиотеки импорта для одной  из  DLL  в вашем каталоге Windows (или WinNT в случае Windows NT 4.0) и посмотрим, что доступно в этой библиотеке  для  использования  в  вашем  приложении.  Например,  в  вашем  каталоге  Windows

находится файл Winsock.DLL. Winsock — это реализация библиотеки соединений через сокеты (sockets) под Windows, которая есть в Unix и других системах и которую можно очень здорово использовать для создания эффективных приложений для соединения через Internet.

Первым делом запустите программу implib с файлом WINSOCK.DLL, набрав следующую команду в командной строке:

C:\WINDOWS>implib winsock.lib winsock.dll Borland ImpLib Version 2.0.140.1

Copyright (c) 1991, 1997 Borland International

После выполнения программы в каталоге C:\Windows (в нашем случае) должен появиться файл Winsock.LIB. Теперь вы можете изучить этот файл, используя программу tlib (о которой мы поговорим позже):

c:\WINDOWS>tlib winsock.lib, winsock.lst

TLIB 4.00 Copyright (c) 1987, 1997 Borland International

Как мы увидим чуть позже, эта команда создает файл листинга для библиотеки, в котором показаны все общие (public) имена (идентификаторы) из библиотеки. Общий идентификатор — это экспортированная (exported) функция или  объект, которые вы можете использовать в своем приложении, связав его с библиотекой импорта. Вот небольшой фрагмент этого файла, показывающий функции, которые вы можете импортировать из файла WINSOCK.DLL:

Publics by module ACCEPT size = 0 ACCEPT

BIND size = 0

Глава 8•Антракт: инструменты CBuilder BIND

CLOSESOCKET size = 0 CLOSESOCKET

CONNECT size = 0 CONNECT GETHOSTBYADDR size = 0 GETHOSTBYADDR GETHOSTBYNAME size = 0 GETHOSTBYNAME GETHOSTNAME size = 0 GETHOSTNAME GETNETBYNAME size = 0 GETNETBYNAME

Вы увидите функции, которые есть в документации к Winsock. Например, функция GetHostName возвращает вам имя сервера, к которому в данный момент существует подключение. Программа implib в комбинации с tlib может вам дать огромное количество информации о доступных функциях в DLL. Довольно много недокументированных функций Windows были найдены путем запуска программы implib с системными DLL и последующего просмотра листингов программы tlib. К примеру, USER.EXE — это не более чем замаскированная DLL. Попробуйте запустить implib с файлом USER.EXE (находится в каталоге \Windows\System). После чего «скормите»

получившийся файл USER.LIB программе tlib и посмотрите на выходной файл USER.LST. Я уверен, что если вы будете смотреть достаточно внимательно, то найдете как минимум одну функцию, которой нет в официальной документации к Win32.

Источник: Теллес М. – Borland C++ Builder. Библиотека программиста – 1998

По теме:

  • Комментарии