【问题标题】:ld.exe cannot find -lcurlld.exe 找不到 -lcurl
【发布时间】:2011-06-23 00:29:26
【问题描述】:

(我发现一个类似的问题,但它是2岁。)

我正在用 Visual C++ 2008 开发一个 Windows 窗体应用程序,它使用 libCurl 的 FTP 功能。尽管我已将 lib 和 include 目录添加到 include 和 library 搜索路径,将 libcurl_imp.lib 添加到 Additional Dependencies 并将 CURL_STATICLIB 添加到 Preproccessor Definitions,但在构建它时会出现 14 个链接器错误。我检查了 cURL 常见问题解答并用谷歌搜索了一些错误,但我还没有找到解决方案。链接器错误如下:

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)

(我删掉了项目名称。)

这是什么原因造成的,我该如何预防?谢谢:)


更新

我已切换到 Code::Blocks,现在它是本机 Win32 GUI 应用程序。我没有得到所有这些链接器错误,但我确实得到了一些东西:

ld.exe cannot find -lcurl.lib

我没有将 include 和 lib 目录添加到搜索目录中,而是将它们放在我的项目目录中。我对这个错误感到困惑,因为 lib 的名称是 libcurl.lib,而不是 curl.lib。对发生的事情有任何想法吗?

编辑:抱歉所有的编辑,我只想提一下我将 libcurl.lib 添加到链接库。


更新

现在我已经将 -lcurl 添加到其他链接选项框中,错误已更改为

ld.exe cannot find -lcurl

没有 .lib 部分。

【问题讨论】:

    标签: c++ mingw libcurl linker-errors codeblocks


    【解决方案1】:

    确保这些库位于编译器的库搜索路径中,并且该库已针对与您的可执行文件相同的架构进行编译(32 位与 64 位,单线程与多线程)。

    【讨论】:

    • 唯一的 lib 文件是 libcurl.lib,它位于项目文件夹中。将项目文件夹添加到链接器搜索路径没有做任何事情。它肯定是 32 位的,不过我不确定单线程和多线程部分。
    猜你喜欢
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    相关资源
    最近更新 更多