У меня возникли проблемы с подключением библиотеки повышения к моей программе на C ++ в Xcode 7.0. Я использую OSX 10.10.5 и скачал Boost 1.59.0.
Ошибка, выданная Xcode:
Неопределенные символы для архитектуры x86_64:
«boost :: math :: tools :: promo_args :: type boost :: math :: beta (int, int, int)», на который ссылаются из:
_main in main.old: символы не найдены для архитектуры x86_64
clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)
После поисков в Google в течение большей части дня я увидел, что у многих людей были похожие проблемы, но ни одно из исправлений не помогло мне.
Первое, что я попробовал, было от:
http://www.nullptr.me/2014/08/20/boost-with-xcode/
Я изменил мои пути поиска в XCode к соответствующему каталогу и под «Другими флагами компоновщика» я добавил «-L / usr / local / lib -lboost_math_c99 -lboost_math_tr1». Это дало мне ту же ошибку. Любопытно, что все работало нормально, когда я скопировал точный код из вышеприведенного блога (поэтому связывание chrono и системных библиотек из boost было в порядке, но как только я снова попытался использовать функцию из математики, возникла ошибка).
Затем я увидел несколько ответов от stackoverflow с похожими предложениями:
Boost Xcode C ++ командной строки Неопределенные символы для архитектуры x86_64
Использование Boost на XCode 5 — Apple LLVM 5.0
Связывание проблем с boost :: program_options на OSX с использованием LLVM
Эти ответы показывают, что мне нужно было перекомпилировать boost с флагами clang и std11. Я сделал это с:
./bootstrap.sh toolset = clang —with-library = math
./ b2 toolset = clang cxxflags = «- std = c ++ 11
-stdlib = libc ++ «option = release linkflags =» — stdlib = libc ++ «link = статический этап
а затем я положил новые библиотеки туда, где они ожидались. Однако снова, когда я попытался встроить XCode, я получил точно такую же ошибку.
Для справки, строка, которая выдает ошибку:
double ell = boost :: math :: beta (2, 2, 1);
Вверху я включил:
повышение / математика / special_functions / gamma.hpp
повышение / математика / tr1.hpp
Любая помощь будет принята с благодарностью. Мне трудно понять, почему я могу без проблем использовать chrono и системные библиотеки boost, но математика выдает ошибку. Я статистик, и моя цель — ускорить работу пакета R, но мне нужна бета-функция, которая, по-видимому, наиболее доступна через boost. Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.
Задача ещё не решена.
Других решений пока нет …