Ошибка связывания с boost :: math и Xcode — неопределенные символы для архитектуры x86_64

У меня возникли проблемы с подключением библиотеки повышения к моей программе на 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.o

ld: символы не найдены для архитектуры 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. Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

2

Решение

Задача ещё не решена.

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

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

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