Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> статически прилинковать boost.filesystem 
:(
    Опции темы
mrgloom
Дата 23.5.2012, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



путаюсть подключить boost.filesystem

Цитата

#include <boost/filesystem.hpp>


мне пишет
Цитата

cannot open file 'libboost_filesystem-vc90-mt-gd-1_47.lib'


т.е. хочет динамически собранную библиотеку, а у меня есть только статически собранные.
+ еще другая библиотека у меня подключена динамически, возможно ли одну подключить статически, а другую динамически?

Добавлено @ 15:32
попробовал

Цитата

#define BOOST_ALL_NO_LIB


получил

Цитата

error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ) referenced in function "void __cdecl boost::system::`dynamic initializer for 'posix_category''(void)" (??__Eposix_category@system@boost@@YAXXZ)
error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ) referenced in function "void __cdecl boost::system::`dynamic initializer for 'native_ecat''(void)" (??__Enative_ecat@system@boost@@YAXXZ)


Это сообщение отредактировал(а) mrgloom - 23.5.2012, 15:32
PM MAIL   Вверх
bsa
Дата 23.5.2012, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



mrgloom, кроме boost_filesystem ты должен прилинковать еще и boost_system.
PM   Вверх
mrgloom
Дата 24.5.2012, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



добавил все хедеры из system и все равно та же ошибка
Код

#include <boost/system/error_code.hpp>
#include <boost/system/system_error.hpp>
#include <boost/system/config.hpp>
#include <boost/system/api_config.hpp>
#include <boost/system/cygwin_error.hpp>
#include <boost/system/linux_error.hpp>
#include <boost/system/windows_error.hpp> 


Добавлено через 3 минуты и 7 секунд
если добавить к либам 
libboost_system-vc90-mt-sgd-1_47.lib

получаю

Цитата

msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in libboost_system-vc90-mt-sgd-1_47.lib(error_code.obj)
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in libboost_system-vc90-mt-sgd-1_47.lib(error_code.obj)
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: void __thiscall std::_Container_base_secure::_Orphan_all(void)const " (?_Orphan_all@_Container_base_secure@std@@QBEXXZ) already defined in libboost_system-vc90-mt-sgd-1_47.lib(error_code.obj)
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::_Container_base_secure::~_Container_base_secure(void)" (??1_Container_base_secure@std@@QAE@XZ) already defined in libboost_system-vc90-mt-sgd-1_47.lib(error_code.obj)
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in libboost_system-vc90-mt-sgd-1_47.lib(error_code.obj)
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::_Container_base_secure::_Container_base_secure(void)" (??0_Container_base_secure@std@@QAE@XZ) already defined in libboost_system-vc90-mt-sgd-1_47.lib(error_code.obj)
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: static unsigned int __cdecl std::char_traits<char>::length(char const *)" (?length@?$char_traits@D@std@@SAIPBD@Z) already defined in libboost_system-vc90-mt-sgd-1_47.lib(error_code.obj)
1>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library


Добавлено через 9 минут и 52 секунды
изменил на /Mtd заработало
PM MAIL   Вверх
mrgloom
Дата 1.6.2012, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



Цитата(bsa @  23.5.2012,  17:19 Найти цитируемый пост)
кроме boost_filesystem ты должен прилинковать еще и boost_system. 


кстати говоря почему? ведь если пользоваться по умолчанию достаточно только подключитть хэдеры.

еще для меня не понятный момент это есть варианты когда можно подключить только хэдеры, а есть когда кроме хедеров надо еще прописать либы в проект, а ведь теоретически то загрузить либу можно и прямо в .h файле, нет?

да и кстати попробовал в релизе

стоит /MD 

если просто 

Цитата

#include "boost/filesystem/operations.hpp"
#include "boost/filesystem/path.hpp"


Цитата

>python_wrapper.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)
1>python_wrapper.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)


если добавить 

Цитата

#include <boost/system/error_code.hpp>
#include <boost/system/system_error.hpp>
#include <boost/system/config.hpp>
#include <boost/system/api_config.hpp>
#include <boost/system/cygwin_error.hpp>
#include <boost/system/linux_error.hpp>
#include <boost/system/windows_error.hpp> 


то тоже самое.

если добавить в проект либы
libboost_filesystem-vc90-mt-s-1_47.lib
libboost_system-vc90-mt-s-1_47.lib

то

Цитата

1>Linking...
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "protected: char * __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Myptr(void)" (?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::assign(char const *,unsigned int)" (?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: void __thiscall std::allocator<char>::deallocate(char *,unsigned int)" (?deallocate@?$allocator@D@std@@QAEXPADI@Z) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "protected: char const * __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Myptr(void)const " (?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: char & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator[](unsigned int)" (??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::allocator<char>::allocator<char>(void)" (??0?$allocator@D@std@@QAE@XZ) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: unsigned int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::size(void)const " (?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: static unsigned int __cdecl std::char_traits<char>::length(char const *)" (?length@?$char_traits@D@std@@SAIPBD@Z) already defined in libboost_system-vc90-mt-s-1_47.lib(error_code.obj)
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library


если поменять на /MT , то всё запустится.

но зато само приложение упадет потом, т.к. видимо что то связанное с питоном, т.к. я включаю еще и python27.lib в проект.

если убрать всё от буста, то такая же ситуация всё вылетает.
т.е. питон дружит с /MD, а с /MT нет.
а буст получается наоборот, у меня собран как статическая либа, можно конечно пересобрать, но я не хочу таскать за собой длл-ки.
и как быть? 

 
PM MAIL   Вверх
volatile
Дата 1.6.2012, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



mrgloom, 
В бусте (для студии) стоит автоматическа линковка, в зависимости от макросов, которые в свою очередь зависят от ключей компиляции. /MT /MD и т.д.
Цитата(mrgloom @  23.5.2012,  15:19 Найти цитируемый пост)
статически прилинковать boost.filesystem 

Вам нужно компилить с /MT - это статическая линковка без дебаг. инф.  (/MTd - с дебагом).
Цитата(mrgloom @  1.6.2012,  14:12 Найти цитируемый пост)
если поменять на /MT , то всё запустится.
но зато само приложение упадет потом, т

Это означает что в вашем коде баги, ошибки, глюки, и прочие нехорошие вещи.  smile 
Нужно писать нормально. Все режимы должны работать!
И главный из них это /MT
Как минимум, его одного и надо отлаживать, добиваться чтобы работал.

PM MAIL   Вверх
mrgloom
Дата 1.6.2012, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



user posted image

там скорее не в программе дело, а в том что не может загрузить библиотеку, я так понимаю что это происходит именно когда программа пытается вызвать внутренний интерпретатор питона, а он за собой тянет длл-ку, хотя это не факт ,а только домыслы.

вообще возможно чтобы в один проект какие то библиотеки подключались статически ,а какие то динамически?
PM MAIL   Вверх
volatile
Дата 1.6.2012, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(mrgloom @  1.6.2012,  15:24 Найти цитируемый пост)
это не факт ,а только домыслы.

mrgloom, Вы для начала это пробовали?

PM MAIL   Вверх
mrgloom
Дата 4.6.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



я это еще раньше прочитал, но не понял, что надо делать.

вкратце я так понял надо добавить какую то декларацию, чтобы правильно загружалась длл, но это возможно для /MT?

вроде это http://msdn.microsoft.com/en-us/library/ms...1(v=vs.80).aspx
попробую.

Это сообщение отредактировал(а) mrgloom - 4.6.2012, 13:31
PM MAIL   Вверх
volatile
Дата 5.6.2012, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



mrgloom, у меня такая ошибка была как-то, когда в системе не было установлено нужного msvcХХ_vcredist
В общем, у вас что-то не стыкуется по версиям msvc библиотек.
Посмотрите "imports table" экзешника, собранного с /MT
Есть там msvcr**.dll ? (в принципе не должно быть).

Еще, попробуйте выдрать манифест из питона, и вставить в свою прогрмму.

PM MAIL   Вверх
EnergoHokum
Дата 5.6.2012, 14:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Цитата

можно конечно пересобрать, но я не хочу таскать за собой длл-ки


Хм. Ну, присоедини к своей программе нужные DLL-ки, вот ссылка на программу, которая умеет это делать. Или вообще инсталлятор запилить.
PM MAIL ICQ   Вверх
mrgloom
Дата 22.6.2012, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



Цитата(volatile @  5.6.2012,  00:16 Найти цитируемый пост)
Посмотрите "imports table" экзешника, собранного с /MT
Есть там msvcr**.dll ? (в принципе не должно быть).


там есть MSVCRT.DLL  или это не то?


причем в дебаге ошибка не появляется.

Это сообщение отредактировал(а) mrgloom - 22.6.2012, 10:56
PM MAIL   Вверх
mrgloom
Дата 22.6.2012, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



причем, что интересно, ошибка появляется только если я пытаюсь использовать код из своего питон враппера, если же просто не вызывать ни 1 функцию, то ошибок не будет.
PM MAIL   Вверх
mrgloom
Дата 22.6.2012, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



всё таки всё как то завязано на ключи, /MT /MD, ибо попробовал тестовое приложение куда подключал питон, и /MD норм отрабатывает, а /MT нет.

может быть python.dll надо как то собрать по другому?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1714 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.