【发布时间】: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