ошибка LNK2019: неразрешенный внешний символ "public: - PullRequest
3 голосов
/ 25 января 2011

Я создаю торрент-приложение с использованием libtorrent в VS 2008. Я попробовал пример, приведенный в ссылке http://www.rasterbar.com/products/libtorrent/examples.html Но это показывает мне эти ошибки .... как их решить?

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 ]

11 голосов
/ 25 января 2011

.lib не входит в ваш проект. Убедитесь, что вы связываете это; Свойства конфигурации -> Линкер -> Ввод -> Дополнительные зависимости

Еще один альтернативный вариант - просто скопировать .lib в папку вашего проекта, но не делайте этого, он обязательно создаст проблемы позже.

Иногда .lib не поставляется с библиотекой, поэтому вам нужно скомпилировать его самостоятельно. README скажет вам это. В этом случае они обычно поставляются с файлом .sln, который вы можете открыть, и просто скомпилируйте его в файл .lib, который вы затем будете использовать в своем основном приложении, как я писал выше

2 голосов
/ 25 января 2011

Ссылка предоставляет вам только источники (включая файлы заголовков) libtorrent.Вы должны скомпилировать эти источники, чтобы получить файл .lib.Добавьте этот файл .lib к клиенту:

Свойства конфигурации / Линкер / Вход -> Дополнительные зависимости: libtorrent-rasterbar.lib

Лучшей отправной точкой для компиляции должен быть файл README.

2 голосов
/ 25 января 2011

Вы добавили путь к файлам заголовков в «Свойствах конфигурации» -> «C / C ++» -> «Общие» -> «Дополнительные каталоги включения»?

1 голос
/ 25 января 2011

Возможно, вы не связаны с торрент-библиотекой или указали неверный путь к ней, чтобы компоновщик не смог ее найти.

1 голос
/ 25 января 2011

public: не является неразрешенным символом. Это просто потому, что компоновщик пытается сказать вам, что (большинство) неразрешенных символов являются открытыми функциями-членами.

Похоже, вы включили заголовок для "libtorrent", но не связаны с библиотекой "libtorrent".

0 голосов
/ 01 ноября 2016

Для меня это было включено в мой проект, но оказалось, что это был плагин, который был разработан, чтобы не создавать экземпляр моего тестового модуля.

0 голосов
/ 21 апреля 2015

Если входные библиотеки 32-битные, и вы используете их для построения 64-битной, это может быть одной из причин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...