Можно ли создать библиотеку импорта для сторонней DLL?

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

14 сен 2015, 06:17

Например, для gdi32.dll? Есть только среда разработки Code Blocks
Build: Dec 27 2013, 12:58:32 - wx2.8.12 (windows, unicode) - 32 bit
с компилятором, а готовых библиотек импорта для АПИшных библиотек почему то нет.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

14 сен 2015, 08:49

Lib файлы поставляются не со средой разработки, а с компилятором. С Code Blocks обычно используется в связке компилятор MinGW, у которого необходимые файлики расположены в подпапке lib. Так что для стандартных библиотек Windows (а gdi32.dll как раз относится к стандартным) никакие манипуляции не требуются.

Если же нужно создать либку не для стандратной dll, то гугл, как всегда, легко помогает. Заострю внимание на том, что импортить либку нужно обязательно утилитами, прилагаемыми к компилятору, так как у разных компиляторов разный ABI.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

14 сен 2015, 12:36

Я знаю, где они обычно лежат. Но в этом экземпляре их там мало, а для gdi32 нет.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

14 сен 2015, 12:55

Кривая версия MinGW, значит. Переустанови. Я вообще использую утилитку mingw-get для этих целей. Она вытаскивает сама с сайта нужные пакейджи и устанавливает. А так же её можно периодически запускать, она будет проверять апдейты.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

16 сен 2015, 07:39

А где взять не кривую? На 64 бита для винды.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Decoder
Сообщения: 303
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

18 сен 2015, 06:20

Нужно установить Platform SDK для Windows. Он скачивается с сайта Microsoft и устанавливается отдельно или поставляется вместе с Visual Studio. В нём самый полный набор библиотечных файлов для Windows.
Поумнеть несложно, куда труднее от дури избавиться.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

18 сен 2015, 10:00

Это неверный ответ. Platform SDK содержит либы, созданные компилятором MS Visual Studio. Такие либы не подходят для MinGW, так как у этих компиляторов разный ABI.

Как решить проблему я уже написал. Нужно поставить нормальную версия MinGW. Лучше всего воспользоваться утилитой mingw-get.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Decoder
Сообщения: 303
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

19 сен 2015, 17:16

Есть специальная утилита coff2oem, которая конвертирует LIB-файлы из одного бинарного формата в другой. Она входит в пакет компилятора Borland C++. С её помощью можно преобразовывать LIB-файлы из Platform SDK Microsoft в ОЕМ-формат, который используют другие компиляторы и компоновщики. Там же имеется утилита implib, которая создаёт LIB-файлы (библиотеки импорта) из DLL в формате ОЕМ.
Поумнеть несложно, куда труднее от дури избавиться.
Ответить