Я поставлен в тупик на этом.
У меня есть кроссплатформенный код, который я пытаюсь скомпилировать с 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.
Заранее спасибо!
боб.
Наконец я получил поддержку для работы с переключателем / 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 привело к много предупреждений компилятора и несколько сбоев. Хотя я не использую каждый пакет, который предлагает повышение, я надеюсь, что те, которые мне нужны, в порядке.
Боб ..
Других решений пока нет …