| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > отлчие obj и lib файлов |
| Автор: nmn 8.12.2009, 01:17 |
| Объясните пожалуйста в кратце в чем отличие данных типов файлов? Оба ведь используются для импорта функций. Или obj используется линкером только как скомпилированный вариант cpp файла, а lib позволяет импортировать соверешнно посторонние функции? |
| Автор: mrbrooks 8.12.2009, 09:13 |
| *.obj - создается компилятором *.obj + *.lib + еще там че нить - дает нам *.exe вообще, в соответствие с правилом кошерности, в любой мало-мальской книге по программированию, уделяется место вопросам о компиляторе, компоновщике и т.д. ЗЫ. Конечно парни типа Фленова на это забивают болт. А люди их читают. |
| Автор: mrbrooks 8.12.2009, 10:00 | ||||
тебе перепечатать? или все еще не понятно по поводу:
Добавлено через 1 минуту и 37 секунд nmn, так же погугли по поводу статических и динамических библиотек. |
| Автор: nmn 8.12.2009, 10:40 | ||
| мда т.е. отличие obj и lib файла в том что obj создается компилятором, а lib+obj+ченить это exe? переведи это на русский пожалуйста до книг не надо посылать, я просил кратко объяснить разницу между этими двумя файлам ни в одном из постов не уделяется внимание этому
|
| Автор: unicuum 8.12.2009, 10:42 | ||
| сделаю предположение: cpp - единица компиляции => препроцессирование => компиляция => ассемблирование => объектный файл компоновка (она же линковка): объектный файл + ... + объектный файл => статическая компоновка => статически скомпонованная библиотека объектный файл + ... + объектный файл => динамическая компоновка => динамически скомпонованная библиотека
|
| Автор: bsa 8.12.2009, 12:18 |
| nmn, статическая либа (*.lib), это архив obj, т.е. ее можно распаковать в исходные объектные файлы (*.obj). Библиотека импорта для *.dll - это такой файл, который просто содержит информацию о символах, которые предоставляет dll библиотека. dll библиотека - это по сути тот же exe файл, только без функции main()/WinMain(), основной задачей которого является предоставление функций сторонним exe файлам. В принципе, никто не запрещает писать программы и делать их в виде dll, чем довольно часто вирусописатели и занимаются. Чтобы "запустить" такую библиотеку, используется программа rundll32.exe, которой в качестве параметров нужно указать библиотеку и функцию, которою необходимо в ней запустить. |
| Автор: xvr 8.12.2009, 17:16 |
| Рекомендую взять прогу dumpbin из VS и натравить ее на какие нибудь .obj и .lib и посмотреть выдачу. Как говорится - лучше один раз увидеть, чем 100 раз услышать |