специфическая ошибка LNK2001 с boost :: filesystem и VC ++ 2010

Я поставлен в тупик на этом.

У меня есть кроссплатформенный код, который я пытаюсь скомпилировать с Win7 x64.
Код использует Boost 1.54.0, в частности библиотеку boost :: filesystem.

Подавляющее большинство моего кода компилируется за исключением нескольких вызовов функций при попытке назначить строки для файловой системы :: путь.

Например, если бы я сделал что-то такое простое, как:

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 &)" (?convert@path_traits@filesystem@boost@@$$FYAXPEBG0AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV?$codecvt@GDH@5@@Z)

Я понятия не имею, что вызывает это. Другие библиотеки повышения (и вызовы файловой системы) работают просто отлично!
Единственное, о чем я могу думать, это то, что происходит с широкими символами и Windows. Поиск по stackoverflow не нашел ничего, что я могу найти. Ошибка самой ссылки, по-видимому, связана с преобразованием строк.

Естественно, это работает на Linux / MacOSX.

Заранее спасибо!

боб.

0

Решение

Наконец я получил поддержку для работы с переключателем / Zc: wchar_t-. Это включало редактирование файла «msvc.jam». Этот файл находится в вашей папке с исходным кодом.

Путь это: ваш-наддув-путь/boost_1_54_0/tools/build/v2/tools/msvc.jam

Я искал wchar_t, который поднял / Zc: wchar_t флаг.
Я изменил флаг, изменив его / Zc: wchar_t-.

Обновленная строка выглядит так:

 toolset.flags $(toolset).compile CFLAGS $(conditions) : /Zc:forScope /Zc:wchar_t- ;

Затем я скомпилировал boost, используя следующую командную строку. (Я использовал эти флаги специально для своих нужд.)

bjam --toolset=msvc-10.0 architecture=x86 threading=multi link=static address-model=64 --build-type=complete install --prefix=C:\local\boost

После компиляции я попробовал свой проект, и он, похоже, работает!
Я еще не проводил никаких серьезных испытаний, но, похоже, он компилируется.

Примечание: переключение флага wchar_t привело к много предупреждений компилятора и несколько сбоев. Хотя я не использую каждый пакет, который предлагает повышение, я надеюсь, что те, которые мне нужны, в порядке.

Боб ..

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]