Зачем нужна *.lib, если всё равно линкуется с *.dll ?
От: Mazay Россия  
Дата: 12.10.06 14:09
Оценка:
Собираю пример к boost::signals. Такие варианты:

    Вариант №1
    g++ disconnect_all.cpp -lboost_signals-mgw-1_33_1

    Получается программа требующая boost_signals-mgw-1_33_1.dll для своей работы.
    При сборке тоже требуется только эта библиотека. Без неё не линкуется.

    Вариант №2
    g++ disconnect_all.cpp -llibboost_signals-mgw-1_33_1

    Здесь всё понятно: статически прилинковывается libboost_signals-mgw-1_33_1.lib.
    Для работы экзешника ничего не требуется

    Вариант №3
    g++ -static disconnect_all.cpp -lboost_signals-mgw-1_33_1

    А вот здесь интересно. Получается экзешник требующий для работы boost_signals-mgw-1_33_1.dll
    Но для линковки используется только boost_signals-mgw-1_33_1.lib (не libboost_signals-mgw-1_33_1.lib)

Объясните, пожалуйста , что происходит в третьем варианте.
Чем отличаются скомпонованные экзешники?
Что даёт ключ -static ?
Зачем может понадобиться третий вариант?
Что такое находится в библиотеке libboost_signals-mgw-1_33_1.lib, если при компоновке с ней dll не нужна, а для работы скомпонованного экзешника — нужна?
Главное гармония ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.