我在VS 2008中使用libtorrent创建了一个torrent应用程序。我尝试了链接http://www.rasterbar.com/products/libtorrent/examples.html中给出的示例 BUt它显示我这些错误....如何解决它们?
Linking...
main.obj : error LNK2019: unresolved external symbol "public: __thiscall libtorrent::torrent_info::~torrent_info(void)" (??1torrent_info@libtorrent@@QAE@XZ) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "public: __thiscall libtorrent::torrent_info::torrent_info(struct libtorrent::lazy_entry const &)" (??0torrent_info@libtorrent@@QAE@ABUlazy_entry@1@@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "class std::basic_ostream > & __cdecl libtorrent::operator<<(class std::basic_ostream > &,struct libtorrent::lazy_entry const &)" (??6libtorrent@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@ABUlazy_entry@0@@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "int __cdecl libtorrent::lazy_bdecode(char const *,char const *,struct libtorrent::lazy_entry &,int)" (?lazy_bdecode@libtorrent@@YAHPBD0AAUlazy_entry@1@H@Z) referenced in function _main
main.obj : error LNK2019: unresolved external symbol "public: void __thiscall libtorrent::lazy_entry::clear(void)" (?clear@lazy_entry@libtorrent@@QAEXXZ) referenced in function "public: __thiscall libtorrent::lazy_entry::~lazy_entry(void)" (??1lazy_entry@libtorrent@@QAE@XZ)
main.obj : error LNK2019: unresolved external symbol "void __cdecl libtorrent::to_hex(char const *,int,char *)" (?to_hex@libtorrent@@YAXPBDHPAD@Z) referenced in function "class std::basic_ostream > & __cdecl libtorrent::operator<<(class std::basic_ostream > &,class libtorrent::big_number const &)" (??6libtorrent@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@ABVbig_number@0@@Z)
main.obj : error LNK2019: unresolved external symbol "public: struct libtorrent::peer_request __thiscall libtorrent::file_storage::map_file(int,__int64,int)const " (?map_file@file_storage@libtorrent@@QBE?AUpeer_request@2@H_JH@Z) referenced in function "public: struct libtorrent::peer_request __thiscall libtorrent::torrent_info::map_file(int,__int64,int)const " (?map_file@torrent_info@libtorrent@@QBE?AUpeer_request@2@H_JH@Z)
C:\Users\photoshop3\Documents\Visual Studio 2008\Projects\Lib2\Debug\Lib2.exe : fatal error LNK1120: 7 unresolved externals
答案 0 :(得分:10)
.lib不包含在您的项目中。确保你链接它; 配置属性 - &gt;链接器 - &gt;输入 - &gt;附加依赖
另一个替代方法是简单地将.lib复制到项目文件夹中,但不要这样,它必然会在以后产生问题。
有时.lib不随库提供,因此您需要自己编译。 自述文件会告诉你这个。如果是这种情况,它们通常附带一个可以打开的.sln文件,然后将其编译成.lib文件,然后在主应用程序中引用该文件,如上所述
答案 1 :(得分:2)
您是否在“配置属性”中添加了头文件的路径 - &gt; “C / C ++” - &gt;“常规” - &gt;“其他包含目录”?
答案 2 :(得分:2)
link只提供libtorrent的源代码(包括头文件)。您应该编译此源以获取.lib文件。将此.lib文件添加到您的客户端:
配置属性/链接器/输入 - &gt;其他依赖项:libtorrent-rasterbar.lib
编译的最佳起点应该是README文件。
答案 3 :(得分:1)
public:
不是未解决的符号。它只是因为链接器试图告诉你(大多数)未解析的符号是公共成员函数。
看起来你已经包含了“libtorrent”的标题,但没有链接到“libtorrent”库。
答案 4 :(得分:1)
您可能没有链接到torrent库或指定了错误的路径,因此链接器无法找到它。
答案 5 :(得分:0)
如果输入库是32位且您正在使用它们构建64位,则可能是其中一个原因
答案 6 :(得分:0)
对我来说,我把它包含在我的项目中,但事实证明它是一个插件,旨在不在我的单元测试中创建一个实例。