У меня установлен boost_1_67_0, и я использовал функции из lambda.hpp, а также библиотеку регулярных выражений, чтобы подтвердить, что функции только для заголовков, а также функции на основе библиотеки работают правильно.
Однако следующий код:
#include <boost/math/special_functions/gamma.hpp>
int main(int argc, char * argv[]) {
boost::math::ibeta((double)5, (double)1, (double)0.5);
}
выдает ошибку (Visual Studio Community 2017, 15.5.2):
LNK2019 unresolved external symbol "double __cdecl boost::math::ibeta<double,double,double>(double,double,double)" (??$ibeta@NNN@math@boost@@YANNNN@Z) referenced in function _main ProjectName C:\PathToProject\ProjectName\main.obj 1
LNK1120 1 unresolved externals
Я попытался переустановить boost, воссоздать проект, переключиться между x86 и x64 (и отладить / выпустить) и использовать boost_1_66_0. Есть еще идеи, что я делаю не так? Присутствует ли ibeta в конкретной библиотеке, которую я могу подтвердить, или только для заголовка?





Я использовал неправильное включение - я должен использовать beta.hpp, а не gamma.hpp. Источником этой ошибки был неправильный include, указанный в документации boost здесь. Правильное включение для ibeta:
#include <boost/math/special_functions/beta.hpp>
Правильная документация для ibeta - здесь. Предыдущая ссылка предназначена для старой версии boost (на которую Google ссылается, если вы [I] в настоящее время ищете «boost ibeta»).
Хорошая работа, пожалуйста, удалите часть «ответ» из вопроса и опубликуйте ее как самостоятельный ответ. Это полезно для других.