错误LNK2019:未解析的外部符号“public:

时间:2011-01-25 06:55:27

标签: c++ visual-studio-2008

我在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

7 个答案:

答案 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)

对我来说,我把它包含在我的项目中,但事实证明它是一个插件,旨在不在我的单元测试中创建一个实例。