Boost.test LNK2019: недостающие подписи

Я пытаюсь создать модульный тест для проекта dll (аддон ArchiCAD, фактическое расширение файла — .apx, кстати). Тестовое обнаружение не удалось, и тестирование в командной строке показало, что для этого требуется добавить библиотеку ArchiCAD в %PATH%. Поэтому я добавил в свой тестовый код:

      struct SetPwd {
    SetPwd() {boost::filesystem::current_path("C:\\Program Files\\GRAPHISOFT\\ArchiCAD SE 2016");}
    ~SetPwd() {}
};

BOOST_GLOBAL_FIXTURE(SetPwd);

(Идея пришла отсюда: повысить модульный тест с помощью тестового адаптера Visual Studio - установить рабочий каталог )

Что он говорит:

      LNK2019 unresolved external symbol "void __cdecl boost::filesystem::detail::current_path(class boost::filesystem::path const &,class boost::system::error_code *)" (?current_path@detail@filesystem@boost@@YAXAEBVpath@23@PEAVerror_code@system@3@@Z) referenced in function "void __cdecl boost::filesystem::current_path(class boost::filesystem::path const &)" (?current_path@filesystem@boost@@YAXAEBVpath@12@@Z)

LNK2019 boost::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > &,class std::codecvt<unsigned short,char,int> const &)" (?convert@path_traits@filesystem@boost@@YAXPEBD0AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEBV?$codecvt@GDH@5@@Z) referenced in function "void __cdecl boost::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > &)" (?convert@path_traits@filesystem@boost@@YAXPEBD0AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@Z)

LNK2019 unresolved external symbol "public: static class std::codecvt<unsigned short,char,int> const & __cdecl boost::filesystem::path::codecvt(void)" (?codecvt@path@filesystem@boost@@SAAEBV?$codecvt@GDH@std@@XZ) referenced in function "void __cdecl boost::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > &)" (?convert@path_traits@filesystem@boost@@YAXPEBD0AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@Z)

Так что похоже параметризация функций не совпадает. Собственные функции Boost.test, кажется, связаны с другими собственными функциями, которых, похоже, не существует.

Факты:

  • Я использую Windows7.1SDK (обязателен для этой версии ArchiCAD)
  • Я собираю boost.test с опциями bootstrap.bat vc10 (я думаю, что этот набор инструментов поставляется с 7.1, но не уверен на 100%).
  • Затем b2.exe адресная модель =64 архитектура =x86 runtime-link=static --with-filesystem
  • Таким образом, материал будет называться libboost_filesystem-vc100-mt-sgd-x64-1_80.lib, что выглядит здоровым. Насколько я понимаю, компиляция прошла нормально.
  • Пробовал с boost 1.78.0 и 1.80.0 (плюс 1.64.0, самая старая из доступных), никакой разницы. Я также попробовал это с предварительно скомпилированной версией 1.80.0 с теми же результатами, так что сборка может быть в порядке.
  • Сообщество Visual Studio 2019 используется

Есть идеи? Обратите внимание, что я не слишком разбираюсь в C++

ПРИМЕЧАНИЕ. Это не вопрос о том, как можно исправить ошибку LNK2019/отсутствующей подписи в целом, а о том, как получается, что некоторые функции не включены в эту конкретную тестовую библиотеку повышения, на которую ссылается сама.

ПРИМЕЧАНИЕ 2 во время начальной загрузки это упоминается:

### Использование набора инструментов 'vc143'.

Не знаю, важно это или нет (Для тестируемого проекта я использую vc10)

0 ответов

Другие вопросы по тегам