Здравствуйте, 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'
Здравствуйте, 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 но ни хрена не понял, документация в этой части — полный отстой.
Здравствуйте, Ignoramus, Вы писали:
>>нужно собрать boost.
I>Я начал это осознавать. До сих пор я думал что это "чистая" библиотека шаблонов, на инклудах работающая.
I>Вопросы:
I>1) Нужно ли тянуть с собой DLL-ы или буст "собирается" в статические LIB-ы?
да, обленились совсем.
I>4) Как правильно юзать результат сборки?
Забыл, давно бууст не юзал, помоему там всё автоматичесипрописывается м чё надо линкуется, ну в урайнем случае пути надо будет прописать
I>Я что-то читал в доках по поводу JAM но ни хрена не понял, документация в этой части — полный отстой.
Ignoramus wrote: > Первый раз хотел использовать функции boost::filesystem и > boost::filesystem::path, но получил сообщение об ошибке линковки:
Кстати о птичках. У них в репозитории в ветке HEAD лежит обновленная
Boost.Filesystem — с поддержкой интернационализации и широких путей.
Ее даже использовать можно — текущая Boost.Filesystem в 1.33.1
совершенно неюзабельная.
Здравствуйте, 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 появились какие-то подпапки, но они пустые .Короче облом
Что я сделал не так?
З.Ы. Это действительно так через ж... сделано или это я просто предвзято отношусь, потому что потратил на эту фигню уже полдня?
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'а.
> Что я сделал не так?
Не знаю, у меня все с первого раза в первый раз получилось Пришли
сюда сообщения об ошибке.
Здравствуйте, Cyberax, Вы писали:
>> Что я сделал не так? C>Не знаю, у меня все с первого раза в первый раз получилось Пришли C>сюда сообщения об ошибке.
Нашел в чем было дело — у меня папка Program Files расположена на диске D, но ее кусок есть также и на С, соответственно переменная окружения %ProgramFiles% = "C:\Program Files", и bjam не находит \Vc7\bin. Скопировал указанную папку с диска Д на диск С и все скомпилилось, либ-файлы сгенерировались.
Однако линкер вижуал студио по-прежнему ругается. Как заставить его "увидеть" либ-файлы?
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, Ignoramus, Вы писали:
I>>Однако линкер вижуал студио по-прежнему ругается. Как заставить его "увидеть" либ-файлы?
K>прописать в свойствах либо проекта либо IDE пути к либам.
Каждую либу отдельно? Которые в разных папочках рассортированы? С жутким названием вроде libboost_filesystem-vc7-mt-gd-1_33.lib? Которое зависит от версии буста, компилятора, а также конфигурации проекта (debug/release/etc)?
Что-то у меня сомнения что это задумано настолько неудобно. Хотя после процедуры сборки буста я бы уже ничему не удивился .
K>Или просто добавить нужную либу в проект.
Это уже вроде легче, но все же, может есть более прямой, "законный" способ это делать?
Здравствуйте, Cyberax, Вы писали:
C>Ignoramus wrote: >> Первый раз хотел использовать функции boost::filesystem и >> boost::filesystem::path, но получил сообщение об ошибке линковки: C>Кстати о птичках. У них в репозитории в ветке HEAD лежит обновленная
А насколько это практикабельно — юзать незарелизенные версии?
C>Boost.Filesystem — с поддержкой интернационализации и широких путей.
АФАИК широкие пути после долгих rationale давно признаны непортабельными и поэтому до сих пор не имплементированы. Разве что-то с тех пор изменилось?
C>Ее даже использовать можно — текущая Boost.Filesystem в 1.33.1 C>совершенно неюзабельная.
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-пути тоже не работали. Были там еще какие-то проблемы, сейчас не
вспомню уже.
Ignoramus wrote: > I>>Однако линкер вижуал студио по-прежнему ругается. Как заставить его > "увидеть" либ-файлы? > K>прописать в свойствах либо проекта либо IDE пути к либам. > Каждую либу отдельно? Которые в разных папочках рассортированы?
bjam при инсталяции копирует все либы в одну папку (C:\Boost по умолчанию). Этот путь просто прописывается в LIBPATH, а auto-link сам выберет нужную либу, их прописывать явно не надо.
> Что-то у меня сомнения что это задумано настолько неудобно. Хотя после > процедуры сборки буста я бы уже ничему не удивился .
Оно очень удобно, если правильно использовать.
Здравствуйте, Cyberax, Вы писали:
C>Ignoramus wrote: >> I>>Однако линкер вижуал студио по-прежнему ругается. Как заставить его >> "увидеть" либ-файлы? >> K>прописать в свойствах либо проекта либо IDE пути к либам. >> Каждую либу отдельно? Которые в разных папочках рассортированы? C>Он при инсталяции копирует все либы в одну папку (C:\Boost по C>умолчанию). Этот путь просто прописывается в LIBPATH, а auto-link сам C>выберет нужную либу, их прописывать явно не надо.
>> Что-то у меня сомнения что это задумано настолько неудобно. Хотя после >> процедуры сборки буста я бы уже ничему не удивился . C>Оно очень удобно, если правильно использовать.
Да, я уже раздуплился, что буст нужно устанавливать как приложение из инсталлятора, и тогда оно все h- и lib- файлы развертывает в одной папке. Лучше поздно чем никогда . До сих пор я тупо включал заголовочные файлы из папки, где я просто развернул буст из архива, без сборки.
Здравствуйте, 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 несовместимы?
Ignoramus wrote: > C>Они там сделаны по типу wstring'а. То есть там существует темплейт > C>basic_path и его спецификации path и wpath. Соответственно, все > C>остальное тоже сделано в таком же духе. > Т.е. опять-таки смешивать пути char и wchar_t нельзя, аналогично тому, > что string и wstring несовместимы?
Можно, он умеет преобразовывать (с учетом кодировки) одни типы путей к
другим.