在 MSVS 2013 中使用 libtorrent

Posted

技术标签:

【中文标题】在 MSVS 2013 中使用 libtorrent【英文标题】:Using libtorrent with MSVS 2013 【发布时间】:2016-05-23 06:20:03 【问题描述】:

我在 MSVS 2013 中使用 NuGet 包管理器安装了libtorrent(版本 1.0.2)。当我运行它以查看是否可以使用它时:

#include <libtorrent\session.hpp>

using libtorrent::session;

int main()

//  session ses;

    return 0;

我收到错误 error C1021: invalid preprocessor command 'warning'

这会将我带到project_source\packages\libtorrent-src.1.0.2\lib\native\libtorrent\include\libtorrent\config.hpp 一行:

#warning unknown OS, assuming BSD

我不确定这是怎么回事,我尝试根据 cplusplus.com 上的帖子将其更改为 #error,但出现了同样的错误。可能是愚蠢的,我评论了那条线,看看会发生什么,现在它把我带到project_source\packages\libtorrent-src.1.0.2\lib\native\libtorrent\include\libtorrent\file.hpp

error C1083: Cannot open include file: 'unistd.h': No such file or directory

任何想法如何解决这个问题?我试过不使用 NuGet,但我不知道如何从下载源中使用 libtorrent。该网站对我没有多大帮助。

【问题讨论】:

如何编译或生成静态库 ["libtorrent.lib"] 或 DLL ["libtorrent.dll"] ?你用的是哪个版本的boost?你用过 OpenSSL 吗? @Arvid 【参考方案1】:

查看config.hpp,假设WIN32 宏是在Windows 上定义的。在你的情况下,情况似乎并非如此。

也许您可以尝试将其更改为测试_WIN32

【讨论】:

谢谢,它修复了#warning 问题,但现在还有很多(我正在尝试运行网站上的示例之一),例如:i.imgur.com/CzgkgYR.png。会不会是我用的那个版本? 看起来您确实在混合 libtorrent 版本。在 1.0.2(你说 NuGet 包有)中,torrent_status 在 torrent_handle.hpp 中定义。在更高版本(1.1 iirc)中,该类型被移出到它自己的标题中(看起来你的错误指向)。不过,在 1.0.2 中,您不应该有该标题。您可能需要确保您下载的源包没有被任何包含路径混合或指向 如何创建或生成静态库 ["libtorrent.lib"] 或 DLL ["libtorrent.dll"] ?你用的是哪个版本的boost?你用过 OpenSSL 吗? @Arvid appveyor 使用 boost-1.59 iirc。但过去 2 或 3 年内的任何版本都应该可以使用

以上是关于在 MSVS 2013 中使用 libtorrent的主要内容,如果未能解决你的问题,请参考以下文章

在 msvs 2013 中 std::shared_ptr 的 compare_exchange_weak 是不是损坏?

尝试调试 WCF 服务代码(MSVS 2013)时,在“添加监视”功能上获取“表达式评估器中的内部错误”

MSVS 2010。如何为解决方案中的所有程序集分配相同的版本?

MSVS 链接器在静态 const 字符串之间添加数据

获取 qmake.exe 以使用 MS VS 2013 构建 Qt

MSVS 12,C++,命令参数不起作用