Ошибка EXC_BAD_ACCESS во время инициализации libtorrent :: session

Вот как я инициализирую свою переменную ‘libtorrent :: session ses’:

ses( fingerprint( "UT", LIBTORRENT_VERSION_MAJOR, 8, 7, 0 )
, std::make_pair( 49152, 65534 )
, "0.0.0.0", session::add_default_plugins
, alert::progress_notification

)

Тем не менее, я получаю код EXC_BAD_ACCESS = 1 во время выполнения этой строки в конструкторе сеанса:

init(listen_port_range, listen_interface, print, alert_mask);

Вот полный исходный код метода init для справки. Строка с сообщением об ошибке находится в следующем фрагменте:

            session(fingerprint const& print
, std::pair<int, int> listen_port_range
, char const* listen_interface = "0.0.0.0", int flags = start_default_features | add_default_plugins
, int alert_mask = alert::error_notification
TORRENT_LOGPATH_ARG_DEFAULT)
{
TORRENT_CFG();
TORRENT_ASSERT(listen_port_range.first > 0);
TORRENT_ASSERT(listen_port_range.first < listen_port_range.second);
init(listen_port_range, listen_interface, print, alert_mask);
#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING
set_log_path(logpath);
#endif
start(flags);
}

Я читал, что виновником может быть зомби, то есть переменная, которая была выпущена, однако я не уверен, какие из этих переменных, которые я передаю во время инициализации, могли быть освобождены, они все кажутся хорошими мне.

Вопрос в том, почему я получаю ошибку EXC_BAD_ACCESS во время инициализации моей переменной libtorrent :: session?

Любые намеки или предложения будут с благодарностью.

0

Решение

Убедитесь, что у вас нет проблем с совместимостью с ABI. У libtorrent есть много вариантов сборки, которые влияют на его ABI.

Если вы собираете libtorrent как разделяемую библиотеку, убедитесь, что все определения TORRENT_ *, используемые для сборки libtorrent, также предоставлены программе, включая заголовки libtorrent.

Эта проблема была значительно уменьшена в libtorrent 1.0.x, в этой версии только эти определения влияют на ABI:

  • TORRENT_USE_IPV6
  • TORRENT_NO_DEPRECATE

В более ранних версиях эти определения также влияют на ABI:

  • TORRENT_DEBUG
  • TORRENT_DISABLE_DHT
  • TORRENT_VERBOSE_LOGGING
  • TORRENT_LOGGING
  • TORRENT_DISABLE_RESOLVE_COUNTRIES
  • TORRENT_DISABLE_FULL_STATS
  • TORRENT_DISABLE_EXTENSIONS
  • _UNICODE
  • TORRENT_DISABLE_POOL_ALLOCATORS

Однако предполагается, что проблемы с интерфейсом abi обнаруживаются отсутствующим символом, имя которого включает все параметры конфигурации. (см. build_config.hpp для деталей).

0

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


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