boost::filesystem и Linker error
От: Ignoramus  
Дата: 29.12.05 15:46
Оценка:
Первый раз хотел использовать функции boost::filesystem и boost::filesystem::path, но получил сообщение об ошибке линковки:

Linking...
LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc7-mt-gd-1_33.lib'


Что бы это значило? Как лечится?

31.12.05 09:12: Перенесено модератором из 'C/C++' — Павел Кузнецов
Re: boost::filesystem и Linker error
От: korzhik Россия  
Дата: 29.12.05 16:00
Оценка:
Здравствуйте, Ignoramus, Вы писали:

I>Первый раз хотел использовать функции boost::filesystem и boost::filesystem::path, но получил сообщение об ошибке линковки:


I>

I>Linking...
I>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc7-mt-gd-1_33.lib'


I>Что бы это значило? Как лечится?


нужно собрать boost.
Re[2]: boost::filesystem и Linker error
От: Ignoramus  
Дата: 29.12.05 16:21
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, Ignoramus, Вы писали:


I>>Первый раз хотел использовать функции boost::filesystem и boost::filesystem::path, но получил сообщение об ошибке линковки:


I>>

I>>Linking...
I>>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc7-mt-gd-1_33.lib'


I>>Что бы это значило? Как лечится?


K>нужно собрать boost.


Я начал это осознавать. До сих пор я думал что это "чистая" библиотека шаблонов, на инклудах работающая.

Вопросы:

1) Нужно ли тянуть с собой DLL-ы или буст "собирается" в статические LIB-ы?

2) Какова процедура "сборки"?

3) Какого хрена они ее в несобранном виде поставляют?

4) Как правильно юзать результат сборки?

Я что-то читал в доках по поводу JAM но ни хрена не понял, документация в этой части — полный отстой.

Помогите плз!
Re[3]: boost::filesystem и Linker error
От: korzhik Россия  
Дата: 29.12.05 16:34
Оценка:
Здравствуйте, Ignoramus, Вы писали:

>>нужно собрать boost.


I>Я начал это осознавать. До сих пор я думал что это "чистая" библиотека шаблонов, на инклудах работающая.


I>Вопросы:


I>1) Нужно ли тянуть с собой DLL-ы или буст "собирается" в статические LIB-ы?


Хочешь соберётся статически, хочешь динамически.
Это контролируется макросом BOOST_FILESYSTEM_DYN_LINK

I>2) Какова процедура "сборки"?


http://www.boost.org/more/getting_started.html

I>3) Какого хрена они ее в несобранном виде поставляют?


да, обленились совсем.

I>4) Как правильно юзать результат сборки?


Забыл, давно бууст не юзал, помоему там всё автоматичесипрописывается м чё надо линкуется, ну в урайнем случае пути надо будет прописать

I>Я что-то читал в доках по поводу JAM но ни хрена не понял, документация в этой части — полный отстой.


Ну а ты ещё раз повнимательней почитай
Re: boost::filesystem и Linker error
От: Cyberax Марс  
Дата: 29.12.05 16:37
Оценка:
Ignoramus wrote:
> Первый раз хотел использовать функции boost::filesystem и
> boost::filesystem::path, но получил сообщение об ошибке линковки:
Кстати о птичках. У них в репозитории в ветке HEAD лежит обновленная
Boost.Filesystem — с поддержкой интернационализации и широких путей.

Ее даже использовать можно — текущая Boost.Filesystem в 1.33.1
совершенно неюзабельная.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[4]: boost::filesystem и Linker error
От: Ignoramus  
Дата: 30.12.05 07:53
Оценка:
Здравствуйте, korzhik, Вы писали:

I>>Я что-то читал в доках по поводу JAM но ни хрена не понял, документация в этой части — полный отстой.


K>Ну а ты ещё раз повнимательней почитай


Почитал. Процедура вроде такая:

1) Скачать nmake-подобную утилиту под непонятным названием JAM.

2) Собрать ее (ну это имхо уже перебор! ), а лучше скачать уже собранную для своей платформы. Скачал версию 33.1.11. Буст у меня 1.33.0.

3) Разархивировать скаченный архив, найти там файл bjam.exe в папке bin, положить его в папку \libs\filesystem\build (там где соотв. jamfile) и запустить. Вот тут я немного не понял как правильно запускать. Для начала просто ЕХЕ файл запускаю без параметров.

4) Куча трудноразбираемого мусора в консоли, кое-где встречается слово failed, и не один раз

5) В папке \bin\boost\libs\filesystem\build появились какие-то подпапки, но они пустые .Короче облом

Что я сделал не так?

З.Ы. Это действительно так через ж... сделано или это я просто предвзято отношусь, потому что потратил на эту фигню уже полдня?
Re[5]: boost::filesystem и Linker error
От: Cyberax Марс  
Дата: 30.12.05 08:35
Оценка:
Ignoramus wrote:
> 2) Собрать ее (ну это имхо уже перебор! ), а лучше скачать уже собранную
> для своей платформы. Скачал версию 33.1.11. Буст у меня 1.33.0.
Лучше собрать. Исходники лежат в папке tools/build/jam_src и собираются
одним нажатием на build.bat. После постройки bjam будет лежат в папке
tools/build/jam_src/bin.ntx86.

Копируем его куда-нибудь в PATH (например, в system32).

> 3) Разархивировать скаченный архив, найти там файл bjam.exe в папке bin,

> положить его в папку \libs\filesystem\build (там где соотв. jamfile) и
> запустить. Вот тут я немного не понял как правильно запускать. Для
> начала просто ЕХЕ файл запускаю без параметров.
Лучше запустить bjam из корня дистрибутива Boost'а.

> Что я сделал не так?

Не знаю, у меня все с первого раза в первый раз получилось Пришли
сюда сообщения об ошибке.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[6]: boost::filesystem и Linker error
От: Ignoramus  
Дата: 04.01.06 17:54
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Что я сделал не так?

C>Не знаю, у меня все с первого раза в первый раз получилось Пришли
C>сюда сообщения об ошибке.

Нашел в чем было дело — у меня папка Program Files расположена на диске D, но ее кусок есть также и на С, соответственно переменная окружения %ProgramFiles% = "C:\Program Files", и bjam не находит \Vc7\bin. Скопировал указанную папку с диска Д на диск С и все скомпилилось, либ-файлы сгенерировались.

Однако линкер вижуал студио по-прежнему ругается. Как заставить его "увидеть" либ-файлы?
Re[7]: boost::filesystem и Linker error
От: korzhik Россия  
Дата: 04.01.06 18:00
Оценка: 2 (1)
Здравствуйте, Ignoramus, Вы писали:

I>Однако линкер вижуал студио по-прежнему ругается. Как заставить его "увидеть" либ-файлы?


прописать в свойствах либо проекта либо IDE пути к либам. Или просто добавить нужную либу в проект.
Re[8]: boost::filesystem и Linker error
От: Ignoramus  
Дата: 04.01.06 18:04
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, Ignoramus, Вы писали:


I>>Однако линкер вижуал студио по-прежнему ругается. Как заставить его "увидеть" либ-файлы?


K>прописать в свойствах либо проекта либо IDE пути к либам.


Каждую либу отдельно? Которые в разных папочках рассортированы? С жутким названием вроде libboost_filesystem-vc7-mt-gd-1_33.lib? Которое зависит от версии буста, компилятора, а также конфигурации проекта (debug/release/etc)?

Что-то у меня сомнения что это задумано настолько неудобно. Хотя после процедуры сборки буста я бы уже ничему не удивился .

K>Или просто добавить нужную либу в проект.


Это уже вроде легче, но все же, может есть более прямой, "законный" способ это делать?
Re[2]: boost::filesystem и Linker error
От: Ignoramus  
Дата: 04.01.06 19:05
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ignoramus wrote:

>> Первый раз хотел использовать функции boost::filesystem и
>> boost::filesystem::path, но получил сообщение об ошибке линковки:
C>Кстати о птичках. У них в репозитории в ветке HEAD лежит обновленная

А насколько это практикабельно — юзать незарелизенные версии?

C>Boost.Filesystem — с поддержкой интернационализации и широких путей.


АФАИК широкие пути после долгих rationale давно признаны непортабельными и поэтому до сих пор не имплементированы. Разве что-то с тех пор изменилось?

C>Ее даже использовать можно — текущая Boost.Filesystem в 1.33.1

C>совершенно неюзабельная.

А что именно неюзабельно?
Re[3]: boost::filesystem и Linker error
От: Cyberax Марс  
Дата: 05.01.06 11:05
Оценка:
Ignoramus wrote:
>> > Первый раз хотел использовать функции boost::filesystem и
>> > boost::filesystem::path, но получил сообщение об ошибке линковки:
> C>Кстати о птичках. У них в репозитории в ветке HEAD лежит обновленная
> А насколько это практикабельно — юзать незарелизенные версии?
Я так постоянно делаю Особых проблем пока не было.

> C>Boost.Filesystem — с поддержкой интернационализации и широких путей.

> АФАИК широкие пути после долгих rationale давно признаны непортабельными
> и поэтому до сих пор не имплементированы. Разве что-то с тех пор изменилось?
Они там сделаны по типу wstring'а. То есть там существует темплейт
basic_path и его спецификации path и wpath. Соответственно, все
остальное тоже сделано в таком же духе.

Под Виндой оно использует Wide-функции. Под Линуксом вроде бы
перекодирует в текущую кодировку.

> C>Ее даже использовать можно — текущая Boost.Filesystem в 1.33.1

> C>совершенно неюзабельная.
> А что именно неюзабельно?
Ansi-пути, например. С неанглийскими путями загибалось все нафиг.
UNC-пути тоже не работали. Были там еще какие-то проблемы, сейчас не
вспомню уже.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
boost и Linker error
От: Cyberax Марс  
Дата: 05.01.06 11:07
Оценка: 28 (1)
#Имя: FAQ.cpp.boost.linkererror
Ignoramus wrote:
> I>>Однако линкер вижуал студио по-прежнему ругается. Как заставить его
> "увидеть" либ-файлы?
> K>прописать в свойствах либо проекта либо IDE пути к либам.
> Каждую либу отдельно? Которые в разных папочках рассортированы?

bjam при инсталяции копирует все либы в одну папку (C:\Boost по умолчанию). Этот путь просто прописывается в LIBPATH, а auto-link сам выберет нужную либу, их прописывать явно не надо.

> Что-то у меня сомнения что это задумано настолько неудобно. Хотя после

> процедуры сборки буста я бы уже ничему не удивился .
Оно очень удобно, если правильно использовать.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[10]: boost::filesystem и Linker error
От: Ignoramus  
Дата: 05.01.06 11:23
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ignoramus wrote:

>> I>>Однако линкер вижуал студио по-прежнему ругается. Как заставить его
>> "увидеть" либ-файлы?
>> K>прописать в свойствах либо проекта либо IDE пути к либам.
>> Каждую либу отдельно? Которые в разных папочках рассортированы?
C>Он при инсталяции копирует все либы в одну папку (C:\Boost по
C>умолчанию). Этот путь просто прописывается в LIBPATH, а auto-link сам
C>выберет нужную либу, их прописывать явно не надо.

>> Что-то у меня сомнения что это задумано настолько неудобно. Хотя после

>> процедуры сборки буста я бы уже ничему не удивился .
C>Оно очень удобно, если правильно использовать.

Да, я уже раздуплился, что буст нужно устанавливать как приложение из инсталлятора, и тогда оно все h- и lib- файлы развертывает в одной папке. Лучше поздно чем никогда . До сих пор я тупо включал заголовочные файлы из папки, где я просто развернул буст из архива, без сборки.
Re[4]: boost::filesystem и Linker error
От: Ignoramus  
Дата: 05.01.06 11:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ignoramus wrote:

>>> > Первый раз хотел использовать функции boost::filesystem и
>>> > boost::filesystem::path, но получил сообщение об ошибке линковки:
>> C>Кстати о птичках. У них в репозитории в ветке HEAD лежит обновленная
>> А насколько это практикабельно — юзать незарелизенные версии?
C>Я так постоянно делаю Особых проблем пока не было.

>> C>Boost.Filesystem — с поддержкой интернационализации и широких путей.

>> АФАИК широкие пути после долгих rationale давно признаны непортабельными
>> и поэтому до сих пор не имплементированы. Разве что-то с тех пор изменилось?
C>Они там сделаны по типу wstring'а. То есть там существует темплейт
C>basic_path и его спецификации path и wpath. Соответственно, все
C>остальное тоже сделано в таком же духе.

Т.е. опять-таки смешивать пути char и wchar_t нельзя, аналогично тому, что string и wstring несовместимы?
Re[5]: boost::filesystem и Linker error
От: Cyberax Марс  
Дата: 05.01.06 11:30
Оценка: 2 (1)
Ignoramus wrote:
> C>Они там сделаны по типу wstring'а. То есть там существует темплейт
> C>basic_path и его спецификации path и wpath. Соответственно, все
> C>остальное тоже сделано в таком же духе.
> Т.е. опять-таки смешивать пути char и wchar_t нельзя, аналогично тому,
> что string и wstring несовместимы?
Можно, он умеет преобразовывать (с учетом кодировки) одни типы путей к
другим.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.