4

我正在尝试使用带有 VS2013 (C++) 的 libtorrent-rasterbar 构建一个简单的代码 (examples/simple_client.cpp),但出现以下链接器错误:

error LNK2019: unresolved external symbol "void __cdecl libtorrent::rel_performancetimer_pools_nolog_resolvecountries_deprecated_nodht_ext_(void)" (?rel_performancetimer_pools_nolog_resolvecountries_deprecated_nodht_ext_@libtorrent@@YAXXZ) referenced in function "public: __thiscall libtorrent::session::session(struct libtorrent::fingerprint const &,int,unsigned int)" (??0session@libtorrent@@QAE@ABUfingerprint@1@HI@Z)

我使用编译libtorrent:bjam toolset=msvc-12.0 link=static variant=debug boost=source并链接VS中的所有内容:

  • libboost_system-vc120-mt-gd-1_55.lib
  • libboost_date_time-vc120-mt-gd-1_55.lib
  • libtorrent.lib

附加信息:libtorrent-rasterbar-0.16.15;升压_1_55_0;Windows 8.1 64 位。

关于这里出了什么问题的任何想法?

谢谢你。

4

1 回答 1

7

经过一些研究和测试,我设法构建了这个项目。这就是我所做的:

  1. bjam toolset=msvc-12.0 geoip=off resolve-countries=off link=static variant=debug boost=source使用这种方式编译geoipresolve-countries被禁用。

  2. 使用@Hernán 检查 libtorrent RSP 文件的提示,我得到了以下预处理器定义:

    • BOOST_ASIO_SEPARATE_COMPILATION
    • BOOST_ALL_NO_LIB
    • BOOST_ASIO_ENABLE_CANCELIO
    • BOOST_ASIO_HASH_MAP_BUCKETS=1021
    • BOOST_EXCEPTION_DISABLE
    • BOOST_SYSTEM_STATIC_LINK=1
    • TORRENT_DISABLE_GEO_IP
    • TORRENT_DISABLE_RESOLVE_COUNTRIES
    • TORRENT_USE_I2P=1
    • TORRENT_USE_TOMMATH
    • 统一码
    • WIN32_LEAN_AND_MEAN
    • _CRT_SECURE_NO_DEPRECATE
    • _FILE_OFFSET_BITS=64
    • _SCL_SECURE_NO_DEPRECATE
    • _UNICODE
    • _WIN32
    • _WIN32_WINNT=0x0500
    • __USE_W32_SOCKETS
  3. 我在 VS 中添加了这些定义。对于调试配置,还需要一个定义:TORRENT_DEBUG(重要)。

我使用的一些网站:

感谢您的帮助。

于 2014-03-21T04:00:01.910 回答