【问题标题】:Using libcurl from NuGet in C++ (VS2013)在 C++ 中使用来自 NuGet 的 libcurl (VS2013)
【发布时间】:2014-02-01 21:13:55
【问题描述】:

这里是第一个计时器,所以我可能需要一点的帮助。

我一直在尝试只使用简单的 libcurl 示例,但在编译时遇到了问题。 我正在尝试使用 NuGet 并按照我在this previous answer 中阅读的内容进行操作

在项目属性中,我已将 Additional Library Directories 链接到包含 libcurl.dll 的文件夹,并且在 Linker->Input 中我列出了 .lib在之前的答案中。 当我尝试运行它时,它给出了一个关于缺少 .libs 的错误。

1>LINK : fatal error LNK1104: cannot open file 'libeay32.lib' 我想这并不奇怪,因为 .lib 实际上不在文件夹中。当删除对 .lib 的引用时,除了 libcurl.lib 之外,我得到了这个错误。

1>Source.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main

【问题讨论】:

  • 感谢 ruvenb 所指出的,我已经添加了这些 .lib,但仍然出现错误。

标签: c++ visual-studio-2013 libcurl


【解决方案1】:

OpenSSL NuGet 包当前日期为 2013 年 6 月 12 日。openssl.1.0.1.24openssl.redist.1.0.1.24 的目标文件包含以下条件:

$(PlatformToolset.ToLower().IndexOf('v110')) > -1

这些排除了编译和链接,因为 VS2013 默认设置PlatformToolset = v120。必须为v120(和CTP_Nov2013)更新目标。

更多here 了解 RTM 和 CTP 编译器之间的兼容性。

【讨论】:

  • 我也遇到了这个问题 - 你如何覆盖这个问题(你提到'目标必须更新')
  • 这可以在兼容的编译器(例如 v120 和 CPT_Nov2013)之间完成,但不能在 v110 和 v120/CPT_Nov2013 之间完成。我最终构建了 OpenSSL 并发布了我的 NuGet 包。请参阅nuget.org/packages?q=evoskuil 但我完全放弃了 cURL。
【解决方案2】:

这些是 OpenSSL 函数,由 curl 使用。奇怪的是像 nuget 这样的包管理系统没有自动依赖跟踪。无论如何,以与安装 curl 相同的方式安装 OpenSSL 应该可以解决您的问题。

【讨论】:

  • 感谢您向我指出这一点。 NuGet 也会下载其他包,因此我必须将它们也添加到项目属性中。也就是说,仍然有同样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
相关资源
最近更新 更多