Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > отлчие obj и lib файлов


Автор: nmn 8.12.2009, 01:17
Объясните пожалуйста в кратце в чем отличие данных типов файлов? Оба ведь используются для импорта функций. Или obj используется линкером только как скомпилированный вариант cpp файла, а lib позволяет импортировать соверешнно посторонние функции?

Автор: mrbrooks 8.12.2009, 09:13
*.obj - создается компилятором
*.obj + *.lib + еще там че нить - дает нам *.exe

вообще, в соответствие с правилом кошерности, в любой мало-мальской книге по программированию, уделяется место вопросам о компиляторе, компоновщике и т.д. 

ЗЫ. Конечно парни типа Фленова на это забивают болт. А люди их читают.

Автор: nmn 8.12.2009, 09:33
Цитата(mrbrooks @  8.12.2009,  09:13 Найти цитируемый пост)
*.obj - создается компилятором
*.obj + *.lib + еще там че нить - дает нам *.exe

вообще, в соответствие с правилом кошерности, в любой мало-мальской книге по программированию, уделяется место вопросам о компиляторе, компоновщике и т.д. 

ЗЫ. Конечно парни типа Фленова на это забивают болт. А люди их читают.


а теперь по теме вопроса можно? smile

Автор: mrbrooks 8.12.2009, 10:00
Цитата(nmn @  8.12.2009,  09:33 Найти цитируемый пост)
а теперь по теме вопроса можно?


Цитата(mrbrooks @  8.12.2009,  09:13 Найти цитируемый пост)
вообще, в соответствие с правилом кошерности, в любой мало-мальской книге по программированию, уделяется место вопросам о компиляторе, компоновщике и т.д. 


тебе перепечатать? или все еще не понятно по поводу:
Цитата(nmn @  8.12.2009,  01:17 Найти цитируемый пост)
obj используется линкером только как скомпилированный вариант cpp файла, а lib позволяет импортировать соверешнно посторонние функции? 


Добавлено через 1 минуту и 37 секунд
nmn, так же погугли по поводу статических и динамических библиотек. 

Автор: nmn 8.12.2009, 10:40
мда
т.е. отличие obj и lib файла в том что obj создается компилятором, а lib+obj+ченить это exe?
переведи это на русский пожалуйста

до книг не надо посылать, я просил кратко объяснить разницу между этими двумя файлам

ни в одном из постов не уделяется внимание этому
Цитата

Или obj используется линкером только как скомпилированный вариант cpp файла, а lib позволяет импортировать соверешнно посторонние функции?


Автор: 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 раз услышать   smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)