Я в тупике на этом.конкретная ошибка LNK2001 с boost :: filesystem и VC++ 2010
У меня есть код кроссплатформы, который я пытаюсь скомпилировать с помощью Win7 x64. В коде используется Boost 1.54.0, в частности библиотека boost :: filesystem.
Подавляющее большинство моих кодов компилируется, за исключением нескольких вызовов функций при попытке назначить строки файловой системе :: path.
Например, если бы я сделать что-то же просто, как:
string path = (char *)"/This/Is/A/Fake/Path";
filesystem::path boostpath = path;
Я получаю следующее на стадии ссылка:
LNK2001: unresolved external symbol "void __cdecl boost::filesystem::path_traits::convert(unsigned short const *,unsigned short const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::codecvt<unsigned short,char,int> const &)" ([email protected][email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z)
Я понятия не имею, что является причиной этого. Другие библиотеки ускорений (и вызовы файловой системы) работают просто отлично! Единственное, что я могу придумать, это что-то происходит с Wide Characters и Windows. Поиск вокруг stackoverflow не нашел ничего, что я могу найти. Сама ошибка связи связана с преобразованием строк.
Естественно, это работает на Linux/MacOSX.
Заранее благодарен!
Боб.
Где у вас есть библиотеки Boost, которые вы используете? У этого пакета были встроенные библиотеки для VC 10 или вы сами их создали? Правильно ли настроен проект для поиска в библиотеке (который должен быть .lib-файлом с 'boost_filesystem-vc100' где-то в названии). –
Кроме того, я не уверен, но это может иметь какое-то отношение к опции '/ Zc: wchar_t-' для компилятора MSVC (который отключает встроенную поддержку 'wchar_t').Когда используется '/ Zc: wchar_t-', 'wchar_t' будет typedef для' unsigned short' (при условии, что соответствующий заголовок включен). –
Привет, Майкл! Я сам скомпилировал библиотеку boost, предназначенную для MSVC 10.0 - (libs соответствует тому, что вы описали.) Я настроил пакет, используя предписанные методы на boost.org. ---- Итак, в двух словах, я должен скомпилировать boost без этого флага? Я попробую сегодня. Странно, что этот флаг неправильно установлен bjam или бутстрапом. Вы считаете, что это основное требование для использования путей внутри Windows. –