编译libtorrent-net遇LNK1181错误,求解决方案
解决Visual Studio 2017编译libtorrent-net时LNK1181错误的方案
我帮你梳理下解决这个找不到libtorrent.lib问题的关键步骤,毕竟这类库依赖的坑真的很常见:
首先得明确:libtorrent源码包里本来就没有预编译好的
libtorrent.lib,你必须先单独编译libtorrent 1.0.6的源码,生成这个库文件,才能让libtorrent-net链接到它。- 先处理libtorrent的编译:找到libtorrent 1.0.6的工程文件(如果是CMake项目,先在VS2017里用CMake生成对应工程),选择和你编译libtorrent-net完全一致的平台(x86/x64)和编译模式(Debug/Release)——这一点特别重要,不同平台或模式生成的库不兼容,就算找到了也会出其他错误。
- 编译完成后,去libtorrent的输出目录(一般是
build或者bin文件夹下对应模式的子目录)里找,Release模式下是libtorrent.lib,Debug模式下通常是libtorrentd.lib(带d后缀)。
然后配置libtorrent-net的工程:
- 除了已经添加的包含目录,还要在VS2017的工程属性里,找到链接器 -> 常规 -> 附加库目录,把刚才生成
libtorrent.lib的文件夹路径添加进去,让VS知道去哪里找这个库。 - 接着到链接器 -> 输入 -> 附加依赖项,准确填入对应的库文件名:Release模式填
libtorrent.lib,Debug模式填libtorrentd.lib。这里要注意你的错误提示里是libtorrent.lib(后面多了个空格),如果是你在依赖项里不小心加了空格,一定要删掉,不然VS会把带空格的文件名当成目标,自然找不到。 - 另外还要确保libtorrent和libtorrent-net使用的boost版本、编译选项完全一致,比如都是用静态boost库或者动态boost库,不然也可能出现链接错误。
- 除了已经添加的包含目录,还要在VS2017的工程属性里,找到链接器 -> 常规 -> 附加库目录,把刚才生成
最后排查小细节:
- 确认libtorrent本身编译成功了吗?如果libtorrent编译过程中就报错,那肯定不会生成
libtorrent.lib,先单独把libtorrent的工程编译通过再说。 - 检查输出目录的权限,有没有可能VS没有权限读取那个文件夹里的库文件?不过这种情况比较少见,但也可以留意下。
- 确认libtorrent本身编译成功了吗?如果libtorrent编译过程中就报错,那肯定不会生成
内容的提问来源于stack exchange,提问作者Bottopia
相关产品推荐
相关产品推荐

