Задать вопрос
@Valerij_liquid

Как совместить libtorrent и boost библиотеки?

Доброго времени суток, пишу приложение использующее libtorrent ( он работает с использованием библиотеки boost).

Работаю в Visual Studio 2012. Libtorrent скомпилирован для статической привязки к проекту с такими параметрами: toolset=msvc-11.0 boost-link=static boost=system geoip=off encryption=tommath link=static variant=debug runtime-link=static .

Меня интересует использование библиотеки Boost::asio. При попытке простого включения заголовочного файла ( #include ) получаю ошибку линковщика о переопределении символов ( так-как они уже включены в libtorrent ). В общем-то, после долгих копаний добился того, что линковщик ругается на то, что не может распознать символы в тех функциях библиотеки Boost, которые я использую:
1>     Creating library G:\CPP\Torrent\tDownloader\Debug\tDownloader.lib and object G:\CPP\Torrent\tDownloader\Debug\tDownloader.exp
1>tDownloaderDlg.obj : error LNK2001: unresolved external symbol "class boost::system::error_code __cdecl boost::asio::detail::socket_ops::getaddrinfo(char const *,char const *,struct addrinfo const &,struct addrinfo * *,class boost::system::error_code &)" (?getaddrinfo@socket_ops@detail@asio@boost@@YA?AVerror_code@system@4@PBD0ABUaddrinfo@@PAPAU7@AAV564@@Z)
1>tDownloaderDlg.obj : error LNK2001: unresolved external symbol "void __cdecl boost::asio::detail::socket_ops::freeaddrinfo(struct addrinfo *)" (?freeaddrinfo@socket_ops@detail@asio@boost@@YAXPAUaddrinfo@@@Z)


При компиляции использую следующие ключи:
/Yu"stdafx.h" /MP /GS /analyze- /W3 /Zc:wchar_t /I"G:\CPP\LIBS\UNRAR\Dll" /I"D:\boost" /I"G:\CPP\Torrent\include" /ZI /Gm /Od /sdl /Fd"Debug\vc110.pdb" /fp:precise /D "_USING_V110_SDK71_" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /MTd /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\tDownloader.pch"


А при линковке:
/OUT:"G:\CPP\Torrent\tDownloader\Debug\tDownloader.exe" /MANIFEST /NXCOMPAT /PDB:"G:\CPP\Torrent\tDownloader\Debug\tDownloader.pdb" /DYNAMICBASE "libtorrent.lib" /DEBUG /LTCG:STATUS /MACHINE:X86 /INCREMENTAL:NO /PGD:"G:\CPP\Torrent\tDownloader\Debug\tDownloader.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\tDownloader.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"D:\boost\bin.v2\libs" /LIBPATH:"D:\boost\bin.v2"  /LIBPATH:"G:\CPP\Torrent\bin\msvc-11.0\debug\boost-source\link-static\runtime-link-static\threading-multi" /TLBID:1
  • Вопрос задан
  • 3268 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@code-dreamer
Определения этих функций находятся в boost\asio\detail\impl\socket_ops.ipp. Чтоб включить их в сборку boost, нужно определить _WIN32_WINNT >= 0x0501, например:
bjam define=_WIN32_WINNT=0x0501 ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы