ld.exe не может найти -lcurl - PullRequest
3 голосов
/ 07 февраля 2011

(я заметил вопрос, похожий на этот, но ему было 2 года.)

Я разрабатываю приложение Windows Form в Visual C ++ 2008, которое использует функцию FTP в libCurl. Хотя я добавил каталоги lib и include в пути поиска include и library, добавил libcurl_imp.lib в Additional Dependencies и добавил CURL_STATICLIB в определения Preprocessor, я получаю 14 ошибок компоновщика при его сборке. Я проверил FAQ по cURL, и Google исправил некоторые ошибки, но я пока не нашел решения. Ошибки компоновщика:

1>-------.obj : error LNK2031: unable to generate p/invoke for "extern "C" void __clrcall curl_easy_cleanup(void *)" (?curl_easy_cleanup@@$$J0YMXPAX@Z); calling convention missing in metadata
1>-------.obj : error LNK2031: unable to generate p/invoke for "extern "C" enum CURLcode __clrcall curl_easy_perform(void *)" (?curl_easy_perform@@$$J0YM?AW4CURLcode@@PAX@Z); calling convention missing in metadata
1>-------.obj : error LNK2031: unable to generate p/invoke for "extern "C" enum CURLcode __clrcall curl_easy_setopt(void *,enum CURLoption,...)" (?curl_easy_setopt@@$$J0YM?AW4CURLcode@@PAXW4CURLoption@@ZZ); calling convention missing in metadata
1>-------.obj : error LNK2031: unable to generate p/invoke for "extern "C" void * __clrcall curl_easy_init(void)" (?curl_easy_init@@$$J0YMPAXXZ); calling convention missing in metadata
1>-------.obj : error LNK2028: unresolved token (0A00000E) "extern "C" void __clrcall curl_easy_cleanup(void *)" (?curl_easy_cleanup@@$$J0YMXPAX@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>-------.obj : error LNK2028: unresolved token (0A00000F) "extern "C" enum CURLcode __clrcall curl_easy_perform(void *)" (?curl_easy_perform@@$$J0YM?AW4CURLcode@@PAX@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>-------.obj : error LNK2020: unresolved token (0A000010) "extern "C" enum CURLcode __clrcall curl_easy_setopt(void *,enum CURLoption,...)" (?curl_easy_setopt@@$$J0YM?AW4CURLcode@@PAXW4CURLoption@@ZZ)
1>-------.obj : error LNK2020: unresolved token (0A000011) "extern "C" enum CURLcode __clrcall curl_easy_setopt(void *,enum CURLoption,...)" (?curl_easy_setopt@@$$J0YM?AW4CURLcode@@PAXW4CURLoption@@ZZ)
1>-------.obj : error LNK2028: unresolved token (0A000012) "extern "C" void * __clrcall curl_easy_init(void)" (?curl_easy_init@@$$J0YMPAXXZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>-------.obj : error LNK2019: unresolved external symbol "extern "C" void __clrcall curl_easy_cleanup(void *)" (?curl_easy_cleanup@@$$J0YMXPAX@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>-------.obj : error LNK2019: unresolved external symbol "extern "C" enum CURLcode __clrcall curl_easy_perform(void *)" (?curl_easy_perform@@$$J0YM?AW4CURLcode@@PAX@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>-------.obj : error LNK2001: unresolved external symbol "extern "C" enum CURLcode __clrcall curl_easy_setopt(void *,enum CURLoption,...)" (?curl_easy_setopt@@$$J0YM?AW4CURLcode@@PAXW4CURLoption@@ZZ)
1>-------.obj : error LNK2019: unresolved external symbol "extern "C" void * __clrcall curl_easy_init(void)" (?curl_easy_init@@$$J0YMPAXXZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)

(я исключил название проекта.)

Что вызывает это, как я могу предотвратить это? Спасибо:)


UPDATE

Я переключился на Code :: Blocks и теперь это родное приложение Win32 GUI. Я не получаю все эти ошибки компоновщика, но я получаю кое-что:

ld.exe cannot find -lcurl.lib

Вместо добавления каталогов include и lib в каталоги поиска, я просто помещаю их в каталог моего проекта. Я смущен этой ошибкой, потому что имя библиотеки - libcurl.lib, а не curl.lib. Есть идеи о том, что случилось?

РЕДАКТИРОВАТЬ: извините за все правки, я просто хотел упомянуть, что я добавил libcurl.lib в библиотеки ссылок.


UPDATE

Теперь я добавил -lcurl в поле Other Link Options, ошибка изменилась на

ld.exe cannot find -lcurl

без .lib части.

1 Ответ

0 голосов
/ 12 февраля 2011

Убедитесь, что библиотеки находятся в пути поиска библиотеки компилятора, и что библиотека скомпилирована для той же архитектуры, что и ваш исполняемый файл (32 против 64 бит, однопоточный или многопоточный).

...