dll vs lib

Список разделов Аудиоплеер foobar2000 Программирование foobar2000

Описание: Для программистов, пищущих плагины для foobar2000. SDK и обмен опытом

Сообщение #1 zencd » 21.10.2006, 06:35

есть dll-проект, он генерит только *.dll файл, а мне в другом exe-проекте требуется ещё и *.lib чтобы линкер не ругался; но как заставить первый проект генерить ещё и *.lib не знаю..

как в ms vc++ 2005 express такие проблемы решаются?
извиняюсь за ламерский вопрос  :-[ но вот не знаю как быть
zencd M
Автор темы, Бывалый
Аватара
Возраст: 39
Откуда: spb
Репутация: 1
С нами: 10 лет 7 месяцев

Сообщение #2 skipyrich » 21.10.2006, 06:45

Project->Properties->Linker->General: Ignore Import Library - No (default)
Но, самое интересное, мне не удавалось запретить генерацию библиотеки импорта вне зависимости от значения этой настройки  *ну*
Помни!: пережатие из (wav|mp3|mpc|ogg|aac|...) в (mp3|mpc|ogg|aac|...) при любых битрейтах ухудшает качество
skipyrich M
Мастер
Возраст: 43
Откуда: Москва
Репутация: 11
С нами: 10 лет 11 месяцев

Сообщение #3 zencd » 21.10.2006, 06:49

Самое интересное что мне это удалось! И тоже вне зависимости от этой опции: стоит "No"

Появляется только dll файл :-
zencd M
Автор темы, Бывалый
Аватара
Возраст: 39
Откуда: spb
Репутация: 1
С нами: 10 лет 7 месяцев

Сообщение #4 skipyrich » 21.10.2006, 07:11

Похоже, я просто автоматически перенес знание о том, что включение этой опции подавляет генерацию .lib файла из более ранних версий IDE, где это (насколько я помню) работало.
Сейчас же заглянул в MSDN, и выяснилось, что линкеру и приказать-то невозможно делать либу или нет:
When LINK creates a program that contains exports (usually a DLL), it also builds a .lib file, unless an .exp file was used in the build.
*ыыы*
Помни!: пережатие из (wav|mp3|mpc|ogg|aac|...) в (mp3|mpc|ogg|aac|...) при любых битрейтах ухудшает качество
skipyrich M
Мастер
Возраст: 43
Откуда: Москва
Репутация: 11
С нами: 10 лет 11 месяцев

Сообщение #5 zencd » 21.10.2006, 07:23

хм.. может код этого проекта (MS Detour кстати) просто ничего не экспортит?
но DllMain там по кр.мере есть ..
zencd M
Автор темы, Бывалый
Аватара
Возраст: 39
Откуда: spb
Репутация: 1
С нами: 10 лет 7 месяцев

Сообщение #6 zencd » 21.10.2006, 07:31

да, в жтом проекте нет такого вот спецификатора

_declspec(dllimport)

наверное поэтому и не появляется *.lib - без необходимости
zencd M
Автор темы, Бывалый
Аватара
Возраст: 39
Откуда: spb
Репутация: 1
С нами: 10 лет 7 месяцев

Сообщение #7 skipyrich » 21.10.2006, 07:34

DllMain - это Entry Point, оно не экспортируется.
А может быть там используется .exp файл, MSовцы любят это дело...


А что полезного можно сделать с помощью Detours? Overview почитал, вроде бы что-то интересное, а как практически применить что-то не придумаю...
Помни!: пережатие из (wav|mp3|mpc|ogg|aac|...) в (mp3|mpc|ogg|aac|...) при любых битрейтах ухудшает качество
skipyrich M
Мастер
Возраст: 43
Откуда: Москва
Репутация: 11
С нами: 10 лет 11 месяцев

Сообщение #8 zencd » 21.10.2006, 07:40

а чего за *.exp ?
в принципе я нашёл парочку, у других правда проектов..

-------------

с помощью detours можно заменить любой системный вызов на свой
например сделать что-то своё, а потом запустить старый обработчик
- прямо как замена window procedure на свою

ну можно кой-чего переопределить, например GetSysColor() - не факт конечно что будет работать, но попробовать можно
zencd M
Автор темы, Бывалый
Аватара
Возраст: 39
Откуда: spb
Репутация: 1
С нами: 10 лет 7 месяцев

Сообщение #9 skipyrich » 21.10.2006, 08:11

балиннн, спать еще вчера надо было ложиться, перепутал .exp с .def *даун*
Export (.exp) files contain information about exported functions and data items. When LIB creates an import library, it also creates an .exp file. You use the .exp file when you link a program that both exports to and imports from another program, either directly or indirectly. If you link with an .exp file, LINK does not produce an import library, because it assumes that LIB already created one.

Скачал Detours, скомпилил, получил:
bin/detoured.dll
bin/detoured.pdb
lib/detoured.exp
lib/detoured.lib
lib/detours.lib
lib/detours.pdb
include/detours.h

Какой именно библиотечки не хватает?

не факт конечно что будет работать, но попробовать можно
  :-D
Помни!: пережатие из (wav|mp3|mpc|ogg|aac|...) в (mp3|mpc|ogg|aac|...) при любых битрейтах ухудшает качество
skipyrich M
Мастер
Возраст: 43
Откуда: Москва
Репутация: 11
С нами: 10 лет 11 месяцев

Сообщение #10 skipyrich » 21.10.2006, 08:14

Давай в аську переползать, а то мы тут в конкретный оффтопик влезаем...
Помни!: пережатие из (wav|mp3|mpc|ogg|aac|...) в (mp3|mpc|ogg|aac|...) при любых битрейтах ухудшает качество
skipyrich M
Мастер
Возраст: 43
Откуда: Москва
Репутация: 11
С нами: 10 лет 11 месяцев

Сообщение #11 zencd » 21.10.2006, 08:14

я сначала из гуя компилил - это там не было *.lib файла
сейчас пытаюсь nmake'ом .. но не могу
zencd M
Автор темы, Бывалый
Аватара
Возраст: 39
Откуда: spb
Репутация: 1
С нами: 10 лет 7 месяцев

Сообщение #12 Иичко » 21.10.2006, 10:31

Можете в irc на #foobar2000 =) там логи потом можно почитать, глядишь - кто чего подскажет.
Иичко M
Новичок
Возраст: 32
Откуда: Владивосток, Приморский край, Россия
Репутация: 0
С нами: 10 лет 11 месяцев

Сообщение #13 fantom » 19.11.2006, 02:06

в Borland'овских средах поставляется утилита implib.exe (по dll'ке делает lib). возможно и в MS VS (VC++) есть аналог этой утилиты
fantom
Новичок
Репутация: 0
С нами: 10 лет 5 месяцев


Вернуться в Программирование foobar2000