初始化libtorrent::会话期间出现EXC_BAD_ACCESS错误
EXC_BAD_ACCESS error during init of 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);
}
我读到罪魁祸首可能是僵尸,即一个已经发布的变量,然而,我不确定我在初始化过程中传递的那些变量中的哪一个可能已经发布,它们对我来说都很好。
问题是,为什么我在初始化libtorrent::session变量时收到EXC_BAD_ACCESS错误?
如有任何提示或建议,我们将不胜感激。
确保没有任何ABI兼容性问题。libtorrent有很多影响其ABI的构建选项。
如果您正在将libtorrent构建为共享库,请确保用于构建libtorrent的所有TORRENT_*定义也都提供给程序,包括libtorrent头。
这个问题在libtorrent.0.x中已经显著减少,在那个版本中,只有这些定义会影响ABI:
- TORRENT_USE_IPV6
- 种子_不弃用
在早期版本中,这些定义也会影响ABI:
- 种子_DEBUG
- TORRENT_DISABLE_DHT
- TORRENT_VERBOSE_LOGGING
- 种子日志
- TORRENT_DISABLE_RESOLVE_COUNTRIES
- TORRENT_DISABLE_FULL_STATS
- TORRENT_DISABLE_EXTENSIONS
- _UNICODE
- TORRENT_DISABLE_POOL_allocaters
然而,abi问题应该是由一个丢失的符号检测到的,该符号的名称包括所有配置选项。(详见build_config.hpp)。
相关文章:
- 使用来自 Excel VBA 的 C++ dll 时"Bad DLL calling convention" - 如何解决?
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- 为什么 GetSystemMetrics (SM_CXVIRTUALSCREEN) 返回'bad'值?
- 将 lambda 传递给 STL 集时出错"bad function call"
- 新的 C++14 位分隔符处"Bad Character" Eclipse Oxygen 错误
- 使用 #define 被认为是"bad practice"吗?
- "400 Bad request"使用 OpenSSL BIO 进行请求时
- 解密文件AES_256_CBC返回"bad decrypt"错误
- 在C++流中,eof(),fail(),bad()和good()有什么区别
- make / gcc:"bad build"的可能原因是什么?
- 什么是地址0xbaddc0dedeadbead "Bad decode dead bead"
- 在多线程环境中,什么可能导致"bad file descriptor"?
- "std::vector"在调整大小时引发"bad allocation"异常
- 尝试使用 execp、dup2 和管道实现 shell,挂起或"bad file descriptor"
- OpenCV SVM 在火车上抛出异常,"Bad argument (There is only a single class)"
- 成员函数 bad() 的 std::ftsream 用于检查
- 使用 boost::asio 和 boost::thread 时"Bad file descriptor"
- OpenCV C++神经网络 predict() 函数抛出"Bad argument"错误