Visual Studio 2013 年的 cURL

cURL with Visual Studio 2013

所以我发现 cURL 是一个非常好的库,并且在 OSX 中工作得很好。 但是在 windows 上,现在我在准备这个库时遇到了很大的麻烦。我现在用谷歌搜索了大约 2 天,并尝试了十几种(详细)不同的方法来准备好它。没有任何成功。

以下是我基本上尝试过的一些方法:

  1. 直接下载:这里的问题已经从正确的下载开始了。官方下载页面非常混乱,所以我考虑了 "cURL Download Wizard" > "libcurl development" 这给了我一个版本,我应该能够将其包含到任何项目中。但究竟如何包含它呢?在任何说明中,它都会引导我进入我什至没有的目录。几乎总是提到这个 "curllib.lib" 。我在该下载页面上下载了大约 6 个不同的版本,其中 none 个版本中有这个文件。 (参见示例 this 说明)
  2. Git + CMake:作为上述 Link 的解决方案,建议在此使用 git 克隆。我在那里完成了所有说明,并且还生成了仅带有警告的项目。但这里也说:
    构建安装目标后,您会在 C:\curl.vc12 中找到 bin/include/lib 个文件夹
    好吧,我没有真正理解他的意思 "build install target",我只是构建了整个项目地图。编译正常(115 次成功,0 次失败,2 次跳过)。但是现在 C:\curl.vc12 不存在了。在编译之前我必须预先设置什么?
  3. NuGet:思路又来自第(1)点中的link,与NuGet不同的解决方案。
    使用 Successfully added 'curl 7.30.0.2' to test. 看起来也不错,但是编译 simple.c 会导致一堆 unresolved external symbol linker 错误。但是提供了一个解决方案:
    确保在项目属性中的 Visual C++ 目录下指定了 include 目录和 lib 目录。
    所以在 Project > Properties > VC++ Properties > "Include Directories"
    Project > Properties > VC++ Properties > "Library Directories"
    以及 Project > C/C++ > General > "Additional Include Directories"Project > Linker > General > "Additional Library Directories" 中,我拼命添加了我项目中的 \packages\ 路径文件夹。
    如说明中所述,我将 libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib; 添加到 Project > Linker > Input > "Additional Dependencies"
    所有这些都完成了,unresolved external symbol 错误消失了!因此我只得到一个错误 cannot open file 'libcurl.lib'。我可以在这里做什么?

我对这一切都很陌生。但我现在非常努力地让这个最终起作用。那我该怎么办?
我使用 Visual Studio 2013 社区版。当前最新版本的 cURL 是 7.42.1。 非常欢迎任何帮助!

我自己遇到了问题,现在终于可以使用了。 我从 official website 下载了 curl-7.42.1.zip。 在存档中,您会找到源代码和 winbuild/BUILD.WINDOWS.txt,其中基本上包含我遵循的说明。我假设它已经解压到 C:\curl-7.42.1.

打开位于

Visual Studio command prompt

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts

这会自动设置使用 Visual Studio 工具(如编译器)所需的环境变量。然后移动到winbuild目录调用

nmake /f Makefile.vc mode=dll

如我上面提到的文本文件中所述。

这将创建目录

C:\curl-7.42.1\builds\libcurl-vc-x86-release-dll-ipv6-sspi-winssl

包含libcurl.dll、libcurl.lib和必要的头文件。让我们将其重命名为 C:\curl-7.42.1\builds\release :'D

  1. 然后打开你的项目。
  2. 打开项目的属性。
  3. 确保选择 Release 作为配置(左上角)!
  4. 导航到 VC++ Directories > Include directories 并添加 C:\curl-7.42.1\builds\release\include
  5. C:\curl-7.42.1\builds\release\lib 添加到 VC++ Directories > Library directories
  6. 转到 Linker > Input > Additional Dependencies 并添加 libcurl.lib
  7. 最后将 C:\curl-7.42.1\builds\release\bin\libcurl.dll 复制到您的项目文件夹。

这应该可以解决问题! :D 如果你想在调试模式下使用 cURL,你可以做几乎相同的事情,使用 nmake /f Makefile.vc mode=dll debug=yes 重新编译,转到项目的属性,添加新创建的目录路径(将 libcurl.lib 更改为 libcurl_debug.lib) 你应该完成了。

我遇到了同样的问题。我从 https://github.com/curl/curl 下载了 curl。你实际上可以直接用 Visual Studio 2013 编译它(但要小心参数设置:x64 with release)。主要区别在于它为您提供 libcurl_imp.lib。然后你所要做的就是如上所述设置环境变量。只是想提一下,您将不得不在附加依赖项中使用 libcurl_imp.lib 而不是 libcurl.lib (我怀疑此更改是因为新版本的 curl)。